在寫存儲過程時經常會遇到需要拼接SQL語句的情況,一般情況下僅僅是為了執行拼接後的語句使用exec(@sql)即可。
而今天的一個存儲過程卻需要擷取動态SQL的查詢結果。
需求描述:在某表中根據Id值查詢Cost值(表名不确定但表結構确定,如下面的Product表)
如果不考慮擷取傳回值,我們這樣寫即可:
要擷取傳回值首先嘗試的是下面兩個方法:
以上兩種方法均會報錯,求助萬能的網絡發現一個可愛的函數--sp_executesql可以滿足我們的要求:
不僅能擷取傳回值,還能傳參有沒有!隻可惜表名依然需要拼接在SQL語句中。
注意:@sql的類型需要是'ntext/nchar/nvarchar'這三種之一。