質問があります。私はカーソルに取り組んでいます。毎回、最後のレコードをフェッチしてそのデータを出力した後、カーソルは追加の行を出力します。私が言いたいことを理解するために、次のサンプル例を考えてみてください: 10 人の顧客だけに関する情報を印刷したいです。
USE Northwind
GO
DECLARE myCursor CURSOR
FOR SELECT TOP(10) ContactName FROM Customers
DECLARE @RowNo int,@ContactName nvarchar(30)
SET @RowNo=1
OPEN myCursor
FETCH NEXT FROM myCursor INTO @ContactName
PRINT LEFT(CAST(@rowNo as varchar) + ' ',6)+' '+ @ContactName
SET @RowNo=@RowNo+1
SET @ContactName=''
WHILE @@FETCH_STATUS=0
BEGIN
FETCH NEXT FROM myCursor INTO @ContactName
PRINT + LEFT(CAST(@rowNo as varchar) + ' ',6)+' '+ @ContactName
SET @RowNo=@RowNo+1
SET @ContactName=''
END
CLOSE myCursor
DEALLOCATE myCursor
次に、出力を見てください。
1 Maria Anders
2 Ana Trujillo
3 Antonio Moreno
4 Thomas Hardy
5 Christina Berglund
6 Hanna Moos
7 Frédérique Citeaux
8 Martín Sommer
9 Laurence Lebihan
10 Elizabeth Lincoln
11
行番号 11 も印刷されています。カーソルの問題ですか、それとも常に発生しますか? この追加データを印刷しない方法はありますか?ありがとうございます (私は sql erver 2008 を使用しています)