カーソルの次のレコードを移動せずに取得しようとしています。すなわち、ピーク機能のようなものです。カーソル上のLEAD変数
DECLARE
@Id varchar(80),
@Name varchar(80),
@NextId varchar(80)
BEGIN
SET @MyCursor = CURSOR FOR
SELECT id,name FROM dbo.My_TABLE
WHERE name like '%joe%';
OPEN @MyCursor
FETCH NEXT FROM @MyCursor
INTO @Id, @Name
WHILE @@FETCH_STATUS = 0
BEGIN
print 'Id is :: ' + cast(@Id as varchar(80)) + ' : ' + @Name
SELECT @NextId=id, LEAD (id,1) OVER (ORDER BY id) FROM @MyCursor;
print 'The next record is :: ' + @NextId
FETCH NEXT FROM @MyCursor
INTO @Id, @Name
END;
はしかし、私はそれを示すエラーを取得::私はselect文を発行すると
The variable '@MyCursor' is a cursor variable, but it is used in a place where a cursor variable is not valid.
、私はこのバックのようないくつかのデータを取得する可能性がありますここで私がこれまでに書かれているいくつかのSQLコードがあります
----+------
ID NAME
----+------
5 + Joes
6 + FakeJoe
7 + Joes
8 + Joes
9 + MikeJoes
私の場合、ID5と6を比較して名前が一致するかどうかを確認することが重要です。そうであれば、7と8のように、私は後者のレコードを削除したい。そうでない場合、5と6のように、レコードだけを残したい
が鳴り'%joe%'とM2.ID
Cato