【发布时间】:2017-11-24 16:44:19
【问题描述】:
我有三张桌子:
- TB1 : P (p_id (pk),p_name,p_description)
- TB2: PV (pv_id (pk),p_id(fk),v_id(fk),cost)
- TB3:V(V_id(pk),名称)
我在下面使用了 SQL Server 存储过程“Addp”,它在被调用时插入 p_name 和 p_description。
CREATE PROCEDURE AddP
(@name CHAR(50),
@description VARCHAR(255))
AS
BEGIN
DECLARE @PCount INT
SELECT @PCount = Count(P_ID)
FROM P
WHERE P_Name= @name
IF @PCount = 0
BEGIN
INSERT INTO P(P_Name, P_Description)
VALUES(@name, @description)
END
RETURN @@IDENTITY
END
现在,我想创建另一个过程,我可以在其中插入“v_id”和成本以及“Addp”存储过程。我的第二个 SP 如下所示。我的问题是我应该如何将我的第一个存储过程调用到第二个新存储过程中。这样当我执行第二个存储过程时,我应该能够一次性插入 p_name,p_description,vi,cost 一切?
CREATE PROCEDURE AddPWithV (@vi int, @cost decimal(12,4))
AS
BEGIN
INSERT INTO PV (V_ID, Cost)
VALUES(@vi, @cost)
Return @@IDENTITY
END;
我是存储过程的新手。所以,请指导我进行解释。 任何帮助表示赞赏! 提前致谢!
【问题讨论】:
-
更多归档是什么意思?
-
@Mr.AF.. 这是错字。它必须是字段..以便我可以调用该过程并可以为这些字段插入值
-
如果 v_id 和 cost 列在 P 中不存在以托管它们,则无法添加数据。
-
不要使用
@@IDENTITY,而是使用SCOPE_IDENTITY()- 请参阅stackoverflow.com/questions/1920558/…
标签: sql sql-server sql-server-2014