zoukankan      html  css  js  c++  java
  • sql server使用sp_executesql返回拼接字符串里面的输出参数

    问题:
      今天一同事请教博主,他拼接了一个语句,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)

    脚本运行结果:

    作者声明:
    欢迎转载,但转载请务必注明博文来源:https://www.cnblogs.com/zhang502219048/p/11317762.html

  • 相关阅读:
    [Kotlin] Open Classes and Inheritance
    [Kotlin] Class
    [Kotlin] Reverse a List with downTo
    [Kotlin] Named loop
    [Kotlin] for loop
    [Kotlin] Array List ArrayList
    深度解读 java 线程池设计思想及源码实现
    源码实战 | 从线程池理论聊聊为什么要看源码
    自己实现一个简单的线程池
    死磕 java线程系列之自己动手写一个线程池(续)
  • 原文地址:https://www.cnblogs.com/zhang502219048/p/11317762.html
Copyright © 2011-2022 走看看