2016-08-31 60 views
0

我有一個存儲過程,我想在其中存儲由另一個存儲過程返回的值,我該怎麼做。我嘗試並Google搜索,但無法成功。我的代碼是:如何將存儲過程返回值存儲在表或變量中

declare @t table (name varchar(100))  
declare @MprNum varchar(20)  
insert @t exec usp_GetNextInvoice 'MPRId','MPRNo','MPRMain'  
select @MprNum=name from @t 

我也試過這樣:

create table #t(name varchar(100)) 
declare @MprNum varchar(20) 
insert #t exec usp_GetNextInvoice 'MPRId','MPRNo','MPRMain' 
select @MprNum=name from #t 

但沒有成功。

+0

這是什麼意思沒有成功 – TheGameiswar

+0

如何'usp_GetNextInvoice'返回值,'return'或'select'?請顯示該存儲過程的相關詳細信息。 –

+0

只需看看我已經嘗試過的問題,就可以通過select語句 – Loyal

回答

0

試試這個

INSERT INTO #t 
    EXEC usp_GetNextInvoice 'MPRId','MPRNo','MPRMain' 
+0

返回值。它不工作。 – Loyal

+0

當你說「它不工作」,你的意思是1)你有錯誤信息或2)它成功執行,但你沒有得到任何數據? – Maruli

+0

該程序給我這個「STI-00001」,但它沒有插入表#t – Loyal

0

如果你給一個變量要輸出一個結果,腳本如下圖所示。

--Procedure : 
CREATE PROCEDURE usp_GetNextInvoice 
@MPRId int, 
@MprNum int OUTPUT 
AS 

    SET NOCOUNT ON; 

    SELECT @MprNum = MprNum 
    FROM YourTable T 
    WHERE T.MPRId = @MPRId 

RETURN 
GO 

-- Execution step 
DECLARE @Result int; 
EXECUTE usp_GetNextInvoice 10, @MprNum = @Result OUTPUT; 
SELECT @Result 

如果你在一個表要輸出一個結果,嘗試下面的腳本

--Procedure 
CREATE PROCEDURE usp_GetNextInvoice 
@MPRId int 
AS 

    SET NOCOUNT ON; 

    SELECT * 
    FROM YourTable T 
    WHERE T.MPRId = @MPRId 

RETURN 
GO 

--execution step 
CREATE TABLE #T 
(Col1 ... -- column count should match with the output of the procedure 
....) 
GO 

INSERT INTO #T 
EXEC usp_GetNextInvoice 10 
+0

我試過表插入但沒有插入數據 – Loyal

+0

你得到了什麼錯誤? –

+0

沒有錯誤。但數據也沒有插入到表格中。給出消息「0 rows affected」 – Loyal

0

是本聲明返回任何行?

exec usp_GetNextInvoice 'MPRId','MPRNo','MPRMain' 

因爲你嘗試過的代碼是完美的....

+0

是的,它返回這個值「STI-00001」 – Loyal

相關問題