Sql - Вопрос по курсорам и переменным - PullRequest
0 голосов
/ 11 октября 2010

Я пытаюсь использовать курсор для перемещения, чтобы создать столбец, в котором все части равны полю, которое было до него.В примере

|  column1  |  column 2  |
|     1     |      a     |
|     2     |      b     |
|     3     |      c     |

would to go...

|  column1  |  column2  |  column3  |
|     1     |      a    |     b     |
|     2     |      b    |     c     |
|     3     |      c    |    NULL   |

Итак, чтобы сделать это, я попытался использовать курсор и оператор обновления на основе последнего оператора выборки, как показано ниже:

DECLARE myCursor1 CURSOR READ_ONLY
FOR
SELECT lname AS 'lnamerecoff'
FROM testingThis
ORDER BY lname

OPEN myCursor1
DECLARE @previous char(15)
DECLARE @new char(15)

SET @previous = FETCH NEXT FROM myCursor1

IF NOT EXISTS(SELECT * FROM sys.columns WHERE name = 'lnamerecoff' 
                       AND object_id = OBJECT_ID('testingThis'))
  ALTER TABLE testingThis ADD lnamerecoff int

WHILE @@FETCH_STATUS = 0
BEGIN 
SET @new = FETCH NEXT FROM myCursor1
UPDATE testingThis
SET lnamerecoff = @new
SET @previous = @new
END

Это вызывает синтаксическую ошибкурядом с моим заявлениемКто-нибудь может мне с этим помочь?Спасибо!

1 Ответ

1 голос
/ 11 октября 2010

Должно быть:

fetch next from myCursor1 into @previous 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...