0

すべての入力パラメーター値を取得するストアド プロシージャがあり、そのストアド プロシージャ内で、変数値を設定する必要がある別のストアド プロシージャを実行しています。

親ストアド プロシージャを使用して子ストアド プロシージャの変数を設定する方法がわかりません。また、親ストアド プロシージャの出力は、子ストアド プロシージャの入力ではありません。

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
4

2 に答える 2

0

親ストアド プロシージャに対して行っているように、子ストアド プロシージャに値を渡します...

于 2013-07-28T08:55:51.773 に答える
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'
于 2013-07-28T09:37:49.050 に答える