2017-07-16 4 views
0

私はidという名前のフィールドとそれにはINTという名前のテーブルを返すプロシージャーdbo.pXを持っています。これは0または別の正の整数になります。私はidが0より大きいプロシージャの結果のフィールドを変数に挿入する方法はありますか?

手順dbo.pXであるかどうかを確認するために、dbo.pYという名前のプロシージャ内の変数にこのidを挿入する必要があります。

:私は dbo.pYで実行しようとしました何

CREATE PROCEDURE dbo.pX 
    @param1 VARCHAR(30) 
AS 
    DECLARE @id INT; 
    -- Some code to change the @id 
    SELECT @id AS 'id'; 
GO 

CREATE PROCEDURE dbo.pY 
    @param1 VARCHAR(30) 
AS 
    DECLARE @ret INT; 
    SET @ret = (EXECUTE dbo.pX 'something'); 
    IF (@ret > 0) BEGIN 
     -- Some code that uses @ret 
    END 
GO 

私が解決するためのヒントやヒントはありますか?

Obs:手順dbo.pXを変更することはできません。私は手続きが私をもたらした、と私はその手順を変更することができませんでしたフィールドを知っているように、私はこのようにそれを解決するため

+0

を解決しました返す関数または出力オプション – maSTAShuFu

+1

のストアドスクリプトストアドプロシージャ出力パラメータ:https://technet.microsoft.com/en-us/library/ms187004(v=sql.105).aspx。 INSERT INTO EXEC:https://stackoverflow.com/questions/12686175/sql-server-insert-into-execute-statement – Alex

+0

INSERT INTO EXECは私にソリューションに到達しました、ありがとう:) –

答えて

0

CREATE PROCEDURE dbo.pY 
    @param1 VARCHAR(30) 
AS 
    -- insert the procedure table inside a temporary table 
    DECLARE @temp TABLE (id INT); 
    INSERT INTO @temp EXECUTE dbo.pX 'something'; 

    -- insert id that the table brings in a variable 
    DECLARE @ret INT; 
    SELECT @ret = id FROM @temp; 

    IF (@ret > 0) BEGIN 
     -- Some code that uses @ret 
    END 
GO 

問題は、あなたがスカラーを使用するか:)

関連する問題