0

別のストアドプロシージャ内でストアドプロシージャを実行し、内部ストアドプロシージャの結果を取得して、外部ストアドプロシージャで使用する必要があります。

単純に次のように。

SP1

CREATE PROCEDURE spExternal
AS
BEGIN
    SET NOCOUNT ON;

    DECLARE @intInternalResult INT

    SET intInternalResult= EXEC spInternal
END

SP内部

CREATE PROCEDURE spInternal 
AS
BEGIN
    SET NOCOUNT ON;

    SELECT 1+2
END
4

2 に答える 2

1

友よ、返していない変数に値を代入することはできません。値を返すストアド プロシージャ spInternal のジョブを実行する関数を作成できます。それ以外の場合は、次の方法で実行できます。

CREATE PROCEDURE spInternal 
AS
BEGIN

    SELECT 1+2
END

CREATE PROCEDURE spExternal
AS
BEGIN

    DECLARE @intInternalResult INT
    CREATE TABLE #temp
    (
        Rslt int
    )
    INSERT INTO #temp (Rslt)
    EXEC spInternal

    SELECT @intInternalResult = Rslt
    FROM #temp
    DROP TABLE #temp
    PRINT @intInternalResult
END

EXEC spExternal

もう 1 つ、変数の前に @ を付けるのを忘れないでください。

于 2012-08-03T07:29:04.767 に答える
0

ストアド プロシージャが 1 つの整数値のみを返す場合は、RETURN

create proc pInternal
as
begin
    return 2
end

その後、次のように結果にアクセスできます

exec @intInternalResult = pInternal

整数以外の値または複数の値を返す場合は、OUTPUTパラメーターを使用してください

于 2012-08-03T08:05:50.950 に答える