2010-10-11 27 views
0

我正在嘗試使用遊標移動來創建一個包含與其之前的字段相同的所有部分的列。在示例Sql - 關於遊標和變量的問題

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

would to go... 

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

所以爲了做到這一點我使用光標和更新語句基於如下的最後一個fetch語句嘗試:

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 

這是拋出一個語法錯誤靠近我的fetch語句。誰能幫我這個?謝謝!

+1

LEAD和LAG函數會做了這個如此簡單:/ – 2010-10-11 17:41:38

+0

這些都不是在SQL Server 2005提供,雖然,是嗎? – user416516 2010-10-11 17:48:13

回答

1

它應該是:

fetch next from myCursor1 into @previous