如何从 TSQL SPROC 中的 EXEC() 获取行计数?

2024-01-21

我有一个 TSQL 存储过程,它构建一个查询并按如下方式执行它:

EXEC (@sqlTop + @sqlBody + @sqlBottom)

@sqlTop 包含类似 SELECT TOP(x) col1, col2, col3...

TOP(x) 将限制返回的行数,因此稍后我想知道表中与查询匹配的实际行数是多少。

然后我将 @sqlTop 替换为以下内容:

EXEC ('SELECT @ActualNumberOfResults = COUNT(*) ' + @sqlBody)

我可以明白为什么这不起作用,以及为什么会发生未声明值的错误,但我认为它充分描述了我想要完成的任务。

有任何想法吗?


use sp_executesql and an output parameter

example

DECLARE @sqlBody VARCHAR(500),@TableCount INT, @SQL NVARCHAR(1000)

SELECT @sqlBody = 'from sysobjects'
SELECT @SQL = N'SELECT @TableCount = COUNT(*) ' + @sqlBody

EXEC sp_executesql @SQL, N'@TableCount INT OUTPUT', @TableCount OUTPUT

SELECT @TableCount
GO
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 TSQL SPROC 中的 EXEC() 获取行计数? 的相关文章

  • 从另一个表中选择范围之间的记录

    我有两张桌子 比如说Table1 and Table2 Table1 ID RN 11 1 12 2 13 3 14 4 15 5 16 6 17 7 18 8 19 9 10 10 Table2 ID FromRN ToRN 1 1 3
  • T-SQL - 是否有(免费)方法来比较两个表中的数据?

    I have table a and table b SQL Server 2008 两个表具有完全相同的架构 出于本问题的目的 请考虑table a 我的本地开发表 table b 实时表 我需要创建一个 SQL 脚本 包含UPDATE
  • 如何返回调用不同数据库中的存储过程的远程数据库名称?

    我在一个 SQL Server 2008 R2 上有许多不同的数据库 为了便于论证 我们将它们称为 DB A DB B 和 DB C 我被要求开发一个将存在于 DB A 上的存储过程 该存储过程将用于删除和创建索引 并在 DB A 的表中存
  • 我可以采取哪些措施来提高 SQL Server 中纯用户定义函数的性能?

    我制作了一个简单但计算相对复杂的 UDF 用于查询很少更改的表 在典型用法中 该函数会在一个非常小的参数域上从 WHERE 子句中多次调用 如何才能更快地使用 UDF 我的想法是应该有某种方式告诉 SQL Server 我的函数使用相同的参
  • SQL Server中根据条件进行计数

    有谁知道如何在 SQL Server 中根据条件进行计数 Example 如何对表中名称为 system 的记录以及 CaseID 记录总数进行列计数 顾客表 UserID CaseID Name 1 100 alan 1 101 alan
  • SQL Server 查看主键

    有没有办法在 sql server 中为视图提供主键 我知道在oracle中这是可能的 我不关心更新它的只读视图 但其他人正在 ms access 中使用它 所以我希望显示我知道正确的约束 是的 您可以创建一个索引视图 http msdn
  • 如何更改隔离级别?

    我正在使用 EF 4 0 并且我想使用隔离级别serializable 因为在事务中我想在读取时阻止寄存器 好吧 在 SQL Server 中 我尝试使用以下命令更改隔离级别 SET TRANSACTION ISOLATION LEVEL
  • 如何使用Entity Framework Code First CTP 5存储图像?

    我只是想弄清楚是否有一种简单的方法可以使用 EF Code First CTP 5 存储和检索二进制 文件 数据 我真的很希望它使用 FILESTREAM 类型 但我真的只是在寻找某种方法让它工作 我总是创建另一个类 例如ProductIm
  • 如何在行的列中插入当前日期

    如何将当前日期插入 MS SqlServer Mgm Studio 中 编辑数据 视图中的行列中 我想得到等价的值GetDate 函数调用 这是我希望能澄清问题的图片 您无法键入函数 因此请键入日期或以下解决方案之一 创建默认值GetDat
  • 存储过程和视图有什么区别?

    我对以下几点感到困惑 存储过程和视图有什么区别 在 SQL Server 中 什么时候应该使用存储过程 什么时候应该使用视图 视图是否允许创建可以传递参数的动态查询 哪一个最快 基于什么原因其中一个比另一个更快 视图或存储过程是否永久分配内
  • 检索使用 Uniqueidentifier 插入的最后一行,它不是 IDENTITY

    我对一个查询感到困惑 我需要找出表中添加的最后一行 其中有一列数据类型为 Uniqueidentifier 列是 aspnet Applications ApplicationId 注意 该列是Uniqueidentifier 它不是IDE
  • 如何找到 MS SQL Server 2008 的端口?

    我正在本地计算机上运行 MS SQL Server 2008 我知道默认端口是 1433 但有些情况下它没有侦听该端口 SQL 是 Express 版本 我已经尝试过使用日志 SQL Server Management Studio 注册表
  • 为什么这个 CTE 比使用临时表慢得多?

    自从我们的数据库最近更新以来 我们遇到了一个问题 我进行了此更新 我在这里感到内疚 从那时起 使用的其中一个查询要慢得多 我尝试修改查询以获得更快的结果 并设法使用临时表实现我的目标 这还不错 但我无法理解为什么该解决方案比基于 CTE 的
  • SQL 注入:replace("'", "''") 还不够好吗?

    虽然我当然可以看到使用参数进行 SQL 查询的优点 特别是在处理日期时间和类似的事情时 但我仍然不确定参数作为only防止SQL注入的方法 事实是 我继承了一个应用程序 它有类似的东西 SELECT Field FROM Table WHE
  • 禁止 MySQL/MariaDB 中的存储过程使用 NULL 参数

    我可以指定表列不为空 但如何使存储过程或函数仅与非空参数兼容 在参数名称后添加 NOT NULL 不起作用 您需要自己验证传递的参数值 如果您使用 MySQL 5 5 及更高版本 您可以使用SIGNAL https dev mysql co
  • SQL Server:如何权限模式?

    受到我见过的各种与模式相关的问题的启发 所有权链 http msdn microsoft com en us library ms188676 aspx如果存储过程和表都在同一架构中 则允许我对存储过程授予 EXECUTE 权限 而无需对我
  • SQL Server 列的默认值

    当您使用列的默认值时SQL Server Management Studio表设计器 SSMS 更改您的默认值并在其周围添加括号 在所有版本和 SQL Server 的所有版本中 例如 如果您设置0作为默认值 此默认值更改为 0 我不知道为
  • 在codeigniter中处理存储过程输出参数

    我在 mysql 中有一个带有输出参数的存储过程 我需要将结果发送到使用 codeigniter 的 php 寄存器模式 public function registerUser data sql call register new use
  • PHP 从 MSSQL 存储过程获取返回值

    我无法从 SQL Server MSSQL 2012 SP 获取 OUTPUT 参数以返回 PHP 我的存储过程是 CREATE PROCEDURE spGetNextSeqID ID AS INT OUTPUT AS BEGIN BEGI
  • 如何将Excel文件导入到sql server 2008

    如何在不使用导入向导的情况下使用 sql 查询将 excel 文件导入到 sqlserver2008 Express Edition 中的新表中 谢谢 普拉迪 有一篇微软知识库文章列出了所有可能的方法 http support micros

随机推荐