0
這應該是簡單的,我無法找到一個方法來做到這一點:通過表中的所有行使用遊標檢索行
我想循環,我需要所有該行的列:
DECLARE cursor1 CURSOR FOR
SELECT *
FROM Table_1 order by l1;
DECLARE rr ROW for cursor1; /*does not work */
OPEN cursor1;
FETCH NEXT FROM cursor1 into rr; /*does not work */
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO Centres
VALUES(rr.l1, rr.l2, rr.l3) /*does not work because of rr */
FETCH NEXT FROM cursor1 into rr; /*does not work */
END;
CLOSE cursor1;
DEALLOCATE cursor1;
GO
不幸的是,我不能聲明一個變量,它是我的光標的行類型...或者可以嗎?
目前您可以在沒有遊標(INSERT + SELECT)的情況下完成您的任務,這些都是您應該儘可能避免的事情... –
您需要爲遊標使用變量。但更重要的是,你不需要光標。這只不過是一個插入語句。在這裏使用光標會迫使它比它慢得多。 –
對於遊標返回的每個列,聲明適當類型的變量。然後使用'FETCH NEXT FROM INTO @ col1,@ col2,... @ colN'。但正如其他人所指出的,您的任務可以在沒有光標的情況下完成。 –