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


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

我們可以這樣拼接:

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

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

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

INSERT INTO @t(recordcount)

exec(@sql);  

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

 

核心代碼如下:

Declare @T Table (totalCount int,totalPage int)

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM