INSERT внутри процедуры plsql не сообщает, сколько строк было вставлено

я пытаюсь вставить некоторые строки и обновить некоторые строки внутри цикла pl/sql.

однако все, что я вижу, это успешное завершение процедуры pl/sql.

я вижу операторы dbmbs_ouput, но не выходной статус запросов на вставку и/или обновление.

выход сервера включен.

как я могу увидеть статус вставки и обновления строк (а именно, сколько строк было вставлено и обновлено)


person Kazoom    schedule 09.11.2010    source источник
comment
Цикл сталкивается с ошибкой или вы перехватываете/обрабатываете ошибки? Когда делается COMMIT -- если после цикла, то ни один из них не был успешным.   -  person OMG Ponies    schedule 10.11.2010


Ответы (1)


В Oracle rowcount не выводится автоматически, как в SQL Server.

Вы должны сделать это явно:

BEGIN
        INSERT
        INTO    mytable
        SELECT  …
        FROM    other_table;
        DBMS_OUTPUT.put_line(SQL%ROWCOUNT);
END;
person Quassnoi    schedule 10.11.2010
comment
И обратите внимание, что SQL%ROWCOUNT сбрасывается до нуля после COMMIT или ROLLBACK, поэтому лучше поместить эту строку сразу после оператора DML. - person Jeffrey Kemp; 10.11.2010
comment
@Jeffrey: на самом деле, это то, что я пытался показать, ставя точку с запятой после многоточия :) - person Quassnoi; 10.11.2010
comment
поэтому, если у меня есть несколько вставок и удаление, количество строк дает мне строки, обработанные последним оператором dml? - person Kazoom; 10.11.2010