Sql курсор и хранимая процедура - PullRequest
0 голосов
/ 29 июня 2018

У меня есть хранимая процедура. В таблице заказов есть 3 самые большие даты записи. Я хочу прочитать идентификаторы по одному и отправить хранимую процедуру, но выдает ошибку.

BEGIN TRAN

exec trn_siparis_insert 'Database',348

DECLARE @ID uniqueidentifier 

DECLARE SIPARIS CURSOR FOR

    Select id from TABLE.dbo.siparis  where kayit_tarihi = (SELECT MAX(kayit_tarihi) FROM TABLE.dbo.siparis );

    OPEN SIPARIS 

    FETCH NEXT FROM SIPARIS INTO @ID

    WHILE @@FETCH_STATUS =0
        BEGIN

            BEGIN TRAN

            exec trn_boyutlu_siparis_olustur @siparis_id=@ID, @TargetDb='Database'

            FETCH NEXT FROM SIPARIS INTO @ID

        END

    CLOSE SIPARIS 

    DEALLOCATE SIPARIS 

COMMIT TRAN 

1 Ответ

0 голосов
/ 29 июня 2018

BEGIN TRAN следует переместить прямо перед WHILE:

DECLARE @ID uniqueidentifier 

DECLARE SIPARIS CURSOR FOR

Select id from TABLE.dbo.siparis  where kayit_tarihi = (SELECT MAX(kayit_tarihi) FROM TABLE.dbo.siparis );

OPEN SIPARIS 

FETCH NEXT FROM SIPARIS INTO @ID

BEGIN TRAN

WHILE @@FETCH_STATUS =0
    BEGIN

        exec trn_boyutlu_siparis_olustur @siparis_id=@ID, @TargetDb='Database'

        FETCH NEXT FROM SIPARIS INTO @ID

    END

COMMIT TRAN 

CLOSE SIPARIS 

DEALLOCATE SIPARIS 
...