天天看點

擷取動态SQL查詢語句傳回值(sp_executesql)

在寫存儲過程時經常會遇到需要拼接SQL語句的情況,一般情況下僅僅是為了執行拼接後的語句使用exec(@sql)即可。

而今天的一個存儲過程卻需要擷取動态SQL的查詢結果。

需求描述:在某表中根據Id值查詢Cost值(表名不确定但表結構确定,如下面的Product表)

擷取動态SQL查詢語句傳回值(sp_executesql)

如果不考慮擷取傳回值,我們這樣寫即可:

要擷取傳回值首先嘗試的是下面兩個方法:

以上兩種方法均會報錯,求助萬能的網絡發現一個可愛的函數--sp_executesql可以滿足我們的要求:

不僅能擷取傳回值,還能傳參有沒有!隻可惜表名依然需要拼接在SQL語句中。

注意:@sql的類型需要是'ntext/nchar/nvarchar'這三種之一。