2012-01-18

MS SQL Procedure 多個回傳值

上一篇 MS SQL 資料處理時多個回傳值
再延伸到編寫Stored Procedure時,遇到需要多個回傳值的處理方式!
--範例如下
CREATE PROCEDURE [dbo].[SP_TEST]
    (@xGPNo varchar(2),@xDTNo varchar(3),@xRGPNa Nvarchar(20) OUTPUT,@xRDTNa Nvarchar(50) OUTPUT)--設定傳入值格式
AS
BEGIN
    DECLARE @xSQL Nvarchar(MAX)--存放動態語法
    DECLARE @xGPNa Nvarchar(20)--接收回傳值
    DECLARE @xDTNa Nvarchar(50)--接收回傳值
    DECLARE @xStatemen nvarChar(MAX)--sp_executesql 參數

    --參數設定順序需與語法一致
    SET @xStatemen = '@xGPNa Nvarchar(20) OUT,@xDTNa Nvarchar(50) OUT,@xGPNo varchar(2),@xDTNo varchar(3)'
    --查詢語法
    SET @xSQL = 'select @xGPNa=GPNa,@xDTNa=DTNa '+
                ' from NOM '+
                ' where GPNo='+Quotename(@xGPNo,'''')+
                ' and DTNo='+Quotename(@xDTNo,'''')

    --語法、參數、回傳值及相關變數
    EXEC sp_executesql @xSQL,@xStatemen,@xGPNa OUT,@xDTNa OUT,@xGPNo,@xDTNo
    SET @xRGPNa=@xGPNa
    SET @xRDTNa=@xDTNa
END
--執行
DECLARE @xRGPNa Nvarchar(20)
DECLARE @xRDTNa Nvarchar(50)
EXEC dbo.SP_TEST 'SO','B01',@xRGPNa OUTPUT,@xRDTNa OUTPUT
select @xRGPNa+'-'+@xRDTNa
-----------------------------------------------------------------------
成品出入庫類別-銷貨出庫

(1 個資料列受到影響)
參考自:
MSDN-CREATE PROCEDURE
walter 心得筆記-[SQL Server] 如何接收 Store Procedure 的傳回值
張貼留言