欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

sql server使用sp_executesql返回拼接字符串里面的输出参数

程序员文章站 2022-07-11 19:39:20
问题: 今天一同事请教博主,他拼接了一个语句,select表格形式数据,然后使用@@rowcount获取到行数。 但他又有这样特别的需求:想只获取行数而不返回表格数据结果,因为是while循环,不想返回那么多次表格到客户端,而且后面又想复用这个返回表格形式数据的脚本字符串,不想在这个脚本字符串上改成 ......

问题:
  今天一同事请教博主,他拼接了一个语句,select表格形式数据,然后使用@@rowcount获取到行数。
  但他又有这样特别的需求:想只获取行数而不返回表格数据结果,因为是while循环,不想返回那么多次表格到客户端,而且后面又想复用这个返回表格形式数据的脚本字符串,不想在这个脚本字符串上改成count函数的拼接而影响后面复用脚本。
  试图使用这个方法:把脚本在sql server management studio中打开,右击【查询选项】→【结果】→【网格】→勾选【执行后放弃结果】,结果确实是不返回table表格数据,但连要返回的那部分也都一并不返回了,连print都不显示了,因此这个方法不能满足这个特殊需求。

解决方案:
  经博主编写demo脚本,使用sp_executesql返回拼接字符串里面的输出参数这个知识点,问题得到了解决。博主把这个demo拿出来分享给大家。

脚本:

/*
    作者:zhang502219048
    脚本来源:https://www.cnblogs.com/zhang502219048/p/11317762.html
    说明:本脚本用于示例如何使用sp_executesql返回拼接字符串里面的输出参数
*/
--@sql_table:源sql,返回表数据
declare @sql_table nvarchar(100) = '
    select 1 id 
    union 
    select 3
'
--@sql_count:组装count统计sql
declare @sql_count nvarchar(100) = '
select @icount = count(*) 
from 
(' + @sql_table + ') a
'
--@icount:返回输出参数
declare @icount int
exec sp_executesql @sql_count, n'@icount int out', @icount out --为了拼接返回参数,用sp_executesql
--显示@icount
print(@icount)
--显示原来脚本
print(@sql_table)
--显示组装count统计sql
print(@sql_count)

脚本运行结果:
sql server使用sp_executesql返回拼接字符串里面的输出参数

作者声明:
欢迎转载,但转载请务必注明博文来源: