2012-01-18

MS SQL 資料處理時多個回傳值

在撰寫Stored Procedure時,若需要在一個查詢將多個資料欄位值存入各別的變數中,
可透過 sp_executesql 來達到需求
--範例
DECLARE @xGPNo varchar(2)--查詢變數
DECLARE @xDTNo varchar(3)--查詢變數
DECLARE @xSQL Nvarchar(MAX)--存放動態語法
DECLARE @xGPNa Nvarchar(20)--接收回傳值
DECLARE @xDTNa Nvarchar(50)--接收回傳值

DECLARE @xStatemen nvarChar(MAX)--sp_executesql 參數

SET @xGPNo = 'SO'--指定值
SET @xDTNo = 'B01'--指定值

--參數設定順序需與語法一致
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

--結果   
select @xGPNa+'-'+@xDTNa
-----------------------------------------------------------------------
成品出入庫類別-銷貨出庫

(1 個資料列受到影響)
參考自:TechNet-sp_executesqlMSDN-使用 sp_executesql
張貼留言