从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)

相关文章
相关标签/搜索