光标循环通过使用inser进入无限循环
问题描述:
我想用光标插入数据。光标循环通过使用inser进入无限循环
ALTER PROCEDURE [dbo].[VehBlocMajStatut]
-- Add the parameters for the stored procedure here
@NO_Veh int,
@Statut int
AS
BEGIN
DECLARE @Temp_appel int
DECLARE appel_cursor CURSOR FOR
SELECT NO_APPEL FROM ESPMEDS_LS_APPVEH WHERE NO_VEHICULE = @NO_Veh
OPEN appel_cursor;
FETCH NEXT FROM appel_cursor INTO @Temp_appel;
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO ESPMEDS_LS_APPVEH (NO_VEHICULE, NO_APPEL, STATUT, DATEVEH)
VALUES (@NO_Veh, @Temp_appel, @Statut, GETDATE())
FETCH NEXT FROM appel_cursor INTO @Temp_appel;
END
close appel_cursor
deallocate appel_cursor
END
不幸的是它变成了一个无限循环。当我评论INSERT INTO
条款时,它正常工作。
我该如何做一个光标插入?
答
不需要光标。
INSERT INTO ESPMEDS_LS_APPVEH
(NO_VEHICULE, NO_APPEL, STATUT, DATEVEH)
SELECT @NO_Veh, NO_APPEL, @Statut, GETDATE()
FROM ESPMEDS_LS_APPVEH
WHERE NO_VEHICULE = @NO_Veh
但只是为了好奇心为什么光标不工作?光标不能用于插入,因为我使用更新和我没有问题。或者在循环内调用另一个执行插入的strore过程? – user609511 2011-05-19 18:04:41
@ user609511:1)由于此答案已解决您的问题,请点击旁边的复选标记以接受此问题。 2)由于您没有将游标声明为“STATIC”,因此您在循环中执行的插入操作将添加到游标的结果集中,从而导致无限循环。 – 2011-05-19 18:13:54