J'ai un sp SQL Server à l'aide d'un curseur ainsi:lignes de comptage avant de traiter avec un curseur tsql
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
Il fonctionne très bien, mais il serait agréable d'être en mesure de vérifier si la requête de curseurs a des enregistrements avant de continuer à traiter à travers elle. s'il y a un @ @ var que je peux utiliser pour vérifier cela? Je sais qu'il ya @@ RowCount - mais cela n'a que le nombre actuel de lignes traitées - est donc pas très utile
idéalement je voudrais pouvoir faire quelque chose comme ceci:
if @@cursorQueryHasRecords
BEGIN
WHILE @@FETCH_STATUS = 0
BEGIN
...etc
grâce
nat
Et pourquoi vous ne pouvez pas utiliser @@ FETCH_STATUS lui-même? – Arvo
Et avez-vous vraiment besoin d'un curseur, ils sont souvent le pire choix. http://wiki.lessthandot.com/index.php/Cursors_and_How_to_Avoid_Them – HLGEM