2017-07-16 57 views
0

我有一個程序dbo.pX,它返回一個表,其中有一個名爲id的字段和一個INT,它可以等於0或另一個正整數。我需要在一個名爲dbo.pY,過程內的變量插入此id以驗證id大於0如何將過程結果的字段插入變量?

程序dbo.pX

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

我試圖dbo.pY做:

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 

任何提示或提示,以幫助我找到解決辦法嗎?我不能改變程序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 

問題解決了:)

相關問題