2011-05-19 87 views
2

我想用光标插入数据。光标循环通过使用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条款时,它正常工作。

我该如何做一个光标插入?

回答

3

不需要光标。

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 
+0

但只是为了好奇心为什么光标不工作?光标不能用于插入,因为我使用更新和我没有问题。或者在循环内调用另一个执行插入的strore过程? – user609511 2011-05-19 18:04:41

+1

@ user609511:1)由于此答案已解决您的问题,请点击旁边的复选标记以接受此问题。 2)由于您没有将游标声明为“STATIC”,因此您在循环中执行的插入操作将添加到游标的结果集中,从而导致无限循环。 – 2011-05-19 18:13:54