2

データの挿入にカーソルを使いたい。

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、それは正常に機能します。

カーソルで挿入するにはどうすればよいですか?

4

1 に答える 1

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
于 2011-05-19T14:48:04.033 に答える