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'。但正如其他人所指出的,您的任务可以在没有光标的情况下完成。 –