惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Tailwind CSS Blog
The GitHub Blog
The GitHub Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
B
Blog
Microsoft Security Blog
Microsoft Security Blog
Stack Overflow Blog
Stack Overflow Blog
量子位
Martin Fowler
Martin Fowler
月光博客
月光博客
P
Proofpoint News Feed
博客园_首页
Y
Y Combinator Blog
I
InfoQ
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V
Visual Studio Blog
H
Help Net Security
U
Unit 42
GbyAI
GbyAI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 司徒正美
MongoDB | Blog
MongoDB | Blog
F
Fortinet All Blogs
罗磊的独立博客
酷 壳 – CoolShell
酷 壳 – CoolShell

博客园 - 随风而去

easyui表格格线错位 vb6转vb.net wss 备份与还原相关的站点 怎么用javascript进行拖拽 gridview无数据行时显示表头的方法 WSS3 顺序工作流之发布链接 域FRS复制策略失败后用ansiedit.msc用的着的几个值.恢复FRS对象或属性缺少 工作流一些链接 xp下自定义纸张 有用的几个系统过程 不错的CRM软件 wss3 Beta2 TR下载 终于完成第一个Wss3上WebPart(treeview 目录树形控件) 运行时选择界面上控件的方法 CODEDOM动态编译相关资料 asp.net 变量保存方法 利用IsPostBack检查网页是不是第一次进入(asp.net) 微软的设计思想:总感觉有点返祖现象,以前VB中很方便的功能,在C#中却要很复杂才能实现 treeview 用友u8之远程信道错误解决方法
从sp_executesql中返回table型数据及动态SQL语句的参数化查询
随风而去 · 2017-03-13 · via 博客园 - 随风而去

在返回分页数据时,我们会经常会用到参数化传递过滤条件,如何拼接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)