如何将第一个SQL Server存储过程调用到第二个存储过程

时间:2017-11-24 16:44:20

标签: sql sql-server sql-server-2014

我有三张桌子:

  • TB1:P(p_id(pk),p_name,p_description)
  • TB2:PV(pv_id(pk),p_id(fk),v_id(fk),成本)
  • TB3:V(V_id(pk),名称)

我使用了以下SQL Server存储过程" Addp"在被调用时插入p_namep_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,一次性花费所有内容吗?

CREATE PROCEDURE AddPWithV (@vi int, @cost decimal(12,4))
AS
BEGIN

        INSERT INTO PV (V_ID, Cost)
        VALUES(@vi, @cost)
    Return @@IDENTITY
END;

我是存储过程的新手。所以,请引导我解释一下。 任何帮助表示赞赏! 提前谢谢!

1 个答案:

答案 0 :(得分:0)

宣布更多变量 如下所示:

DECLARE @_vid INT
DECLARE @_cost numeric(18,2) // as per your column daya type 

Select @_vid =vid from TB3 where name =@name ;

Select  @_cost = cost from TB2 where 
P_id in (select p_id from TB1 where name =@name );

现在您可以在任何地方插入两个值...