需求場景:
需動態拼接sql語句進行執行,並將執行的結果賦值給一指定變量。
樣例代碼如下:
SELECT @tableName = TAB_NAME FROM dbo.NMR_BLYWBDY WHERE BLID =@bldm AND TAB_TYPE='0' SELECT @sql= 'SELECT DISTINCT top 1 @a= KBLMINXH FROM '+@tableName+' WHERE PAGENO=(SELECT MAX(PAGENO) FROM '+@tableName+')' EXEC sp_executesql @sql,N'@a varchar(9) output',@kblminxh OUTPUT
注意:聲明kblminxh等輸出參數時應當為ntext,nvarchar,nchar類型,否則會報這個錯過程需要參數'@statement' 為'ntext/nchar/nvarchar' 類型。
說明:@sql里的@a是作為輸出參數的,@a又把值賦值給@kblminxh,感覺像是動態傳遞變量值。sp_executesql是比較快。
注sp_executesql是2005引入的系統函數,自行查詢其好處。
