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

推荐订阅源

Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 司徒正美
大猫的无限游戏
大猫的无限游戏
T
Tailwind CSS Blog
Apple Machine Learning Research
Apple Machine Learning Research
Last Week in AI
Last Week in AI
爱范儿
爱范儿
WordPress大学
WordPress大学
V
V2EX
宝玉的分享
宝玉的分享
小众软件
小众软件
B
Blog
博客园 - 叶小钗
U
Unit 42
酷 壳 – CoolShell
酷 壳 – CoolShell
人人都是产品经理
人人都是产品经理
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
腾讯CDC
H
Help Net Security
P
Proofpoint News Feed
D
Docker
Microsoft Security Blog
Microsoft Security Blog
罗磊的独立博客
月光博客
月光博客

博客园 - 随风而去

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)