Есть ли способ отката и выхода из сценария psql при ошибке? - PullRequest
5 голосов
/ 23 апреля 2010

У меня есть скрипт psql, который выглядит так:

-- first set of statements
begin
sql statement;
sql statement;
sql statement;
exception
    when others then
    rollback
    write some output
    (here I want to exit the entire script and not continue on to the next set of statements)
end
/
-- another set of statements
begin
sql statement;
sql statement;
sql statement;
exception
    when others then
    rollback
    write some output
    (here I want to exit the entire script and not continue)
end
/
... and so on

Можно ли выйти из скрипта и остановить обработку остального скрипта?

Ответы [ 3 ]

8 голосов
/ 23 апреля 2010

Поместите следующие строки вверху вашего файла:

WHENEVER OSERROR EXIT ROLLBACK
WHENEVER SQLERROR EXIT ROLLBACK

... и убедитесь, что у вас есть RAISE; в конце ваших обработчиков исключений.

2 голосов
/ 23 апреля 2010

Я склонен использовать повышение_приложения, когда я хочу остановить выполнение и передать пользовательский код ошибки / сообщение вызывающему сценарию:

http://www.java2s.com/Tutorial/Oracle/0480__PL-SQL-Programming/UsingRAISEAPPLICATIONERROR.htm

1 голос
/ 23 апреля 2010

Хммм ... PL / SQL имеет GOTO , так что вы можете перейти к метке, которую вы поместите прямо в конце скрипта.
например:

GOTO the_end;
[rest of script here]
<<the_end>>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...