sql-server - 在使用游标sql处理之前计算行数

标签 sql-server tsql count rows database-cursor

我有一个使用游标的 SQL Server sp:

DECLARE TestCursor CURSOR FOR
    SELECT
        tblHSOutcomes.strOutcomeName, 
        tblHSData.fkHSTest
    FROM
        tblHSData 
        INNER JOIN tblHSOutcomes ON tblHSData.fkOutcome = tblHSOutcomes.uidOutcome 
        INNER JOIN tblHSTests ON tblHSData.fkHSTest = tblHSTests.uidTest
    WHERE
        tblHSData.fkEpisode = @uidHSEpisodes

OPEN TestCursor
    FETCH NEXT FROM TestCursor
    INTO @Result, @TestID

WHILE @@FETCH_STATUS = 0
BEGIN
...etc

它工作正常,但是最好能够在继续处理之前检查游标查询是否有任何记录。 是否有一个 @@ var 可以用来检查这个?

我知道有@@RowCount - 但这只有当前处理的行数 - 所以不是很有帮助

理想情况下,我希望能够做这样的事情:

if @@cursorQueryHasRecords 
BEGIN
WHILE @@FETCH_STATUS = 0
BEGIN
...etc

谢谢

最佳答案

如果您能够将光标声明为STATIC,那么您可以使用内置函数@@Cursor_Rows

Cursor Options (Static/ReadOnly/Dynamic)

@@Cursor_Rows

关于sql-server - 在使用游标sql处理之前计算行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3734682/

相关文章:

javascript - 使用带有 Node.js 的 REST api 服务器连接到我的 sql 数据库时出现问题

sql-server - MERGE 与 DELETE 在目标上与源上的部分匹配?

php - 比较两个不同类型的数据库表并比较它们的数据的最佳方法?

sql - 如何在 SQL Server 上执行大型 SQL 文件?

sql - 在一个存储过程中选择和更新

SQL Server 传递变量而不是硬编码根元素名称

sql - EXEC sp_who2 - LastBatch?

sql - 累计计数

python - Pandas 事件序列的动态滚动计数

MYSQL跨表统计匹配结果