從sp_executesql中返回table型數據及動態SQL語句的參數化查詢

在返回分頁數據時,咱們會常常會用到參數化傳遞過濾條件,如何拼接SQL語句成了一個難題。sql

咱們能夠這樣拼接:測試

exec('sp_executesql sql語句,參數定義,參數值')spa

sql語句和參數定義部分直接傳遞字符串便可,但參數值部分則要求是變量或常量,傳遞字符串則不能夠。經測試,直接按sp_executesql格式要求傳遞in的參數是能夠的,但傳遞out參數怎麼都不能夠,一直報未定義,這是與變量的做用域有關。怎麼辦呢?內存

通過一天的研究,看到某大俠使用內存表來實現數據插入:作用域

INSERT INTO @t(recordcount)字符串

exec(@sql);  table

有沒有一種豁朗開朗的感受,咱們也能夠經過這種方式,把sp_executesql執行的結果放到內存表@t中,這樣相關的返回值則能夠經過讀取內存表的形式來賦值,從而解決了經過字符串定義SQL語句及參數沒法返回值的問題,也實現了table型數據的傳遞。class

 

核心代碼以下:變量

Declare @T Table (totalCount int,totalPage int)sql語句

insert @T(totalCount,totalPage) EXEC('SP_EXECUTESQL N'''+@sql+''',N'''+@parameterNames+''','+@parameterValues)

相關文章
相關標籤/搜索