Что эквивалентно PRAGMA EXCEPTION в postgresql? - PullRequest
0 голосов
/ 19 сентября 2018

Как реализовать прагму exception_init для postgresql.При написании кода для оракула, который я хочу перенести в postgresql, я хочу использовать определяемые пользователем исключения или коды ошибок вместо кодов ошибок PostgreSQL.

    declare
        not_dropable exception;
            pragma exception_init (not_dropable, -942);      
    begin

    execute immediate 'drop table    &t' ;

    exception
       when not_dropable then
            dbms_output.put_line ( 'Table &t  does not exist ' );
    end;

1 Ответ

0 голосов
/ 19 сентября 2018

Прямого эквивалента в Postgres нет.

Единственный доступный вариант - проверить код ошибки .О несуществующей таблице сообщается с SQLSTATE 42P01 или именем undefined_object

Эквивалент будет выглядеть примерно так:

do
$$
declare
  l_tablename text := '....';
begin
  execute format('drop table %I', l_tablename);
exception 
  when undefined_object then 
     raise notice 'Table % does not exist', l_tablename;
end;
$$

В качестве альтернативы вы можете проверить код ошибки напрямуюwhen sqlstate '42704' then ...

...