2013-07-28 96 views
0

我有一個存儲過程,我正在採取所有輸入參數值,然後在該存儲過程中,我正在運行另一個存儲過程,我需要設置一個變量值。SQL Server:使用存儲過程設置變量值(從一個到另一個)

我不知道如何使用父存儲過程設置子存儲過程的變量。另外,父存儲過程的輸出不是子存儲過程的輸入。

CREATE PROCEDURE [dbo].[usp_aStoredProcedure_1] 
    @sp1_var char(12), 
    @sp1_var char(12), 
    @sp1_var char(12), 
    ...  
    @sp2_var char(20) 

AS 
CREATE TABLE #aTemp_tbl 
(
    col1 char(20) 
) 

CREATE TABLE #Results_tbl 
(
    col1 char(20), 
    val1 char(12) 
) 
IF @val1 IS NOT NULL 
    BEGIN 
     DELETE FROM #aTemp_tbl 
     INSERT INTO #aTemp_tbl EXEC usp_aStoredProcedure_2 @val1 /* this stored procedure requires @sp2_var value, how can I assign it within this usp_aStoredProcedure_1 stored procedure?*/ 
     IF NOT EXISTS (SELECT * FROM #aTemp_tbl)    
      INSERT INTO #Results_tbl SELECT NULL, @val1 
     ELSE 
      INSERT INTO #Results_tbl SELECT col1 , @val1 FROM #aTemp_tbl 
    END 

回答

0

傳遞值到子存儲過程像你這樣做是爲了父母的存儲過程...

+0

我都試過了,但C#代碼表示,父存儲過程中有太多的說法。你可以給語法嗎?安德雷給你舉例說明,請問 – user1889838

+1

@ user1889838 –

0

不能直接設置爲從父存儲過程的孩子可變存儲過程。您必須使用子程序的參數

見下面的例子:

-- child procedure 
create procedure p1 
    @param1 varchar(4), 
    @param2 varchar(4) 
as 
begin 
    select @param1 + @param2; 
end; 

-- parent procedure 
create procedure p2 
    @param1 varchar(2), 
    @param2 varchar(2) 
as 
begin 

    declare 
     @param3 varchar(4), 
     @param4 varchar(4); 

    select 
     @param3 = @param1 + '_x', 
     @param4 = @param2 + '_x' 

    -- setting parameters of child stored procedure using parent stored procedure 
    exec p1 @param3, @param4; 
end; 

-- call parent procedure 
exec p2 '1', '2' 
相關問題