我有一个使用游标的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

谢谢

t

最佳答案

如果您可以将光标声明为STATIC,则可以使用内置函数@@Cursor_Rows
Cursor Options (Static/ReadOnly/Dynamic)

@@Cursor_Rows

10-06 09:37