如何为PostgreSQL实现编译指示exception_init。 在这里编写要迁移到PostgreSQL的oracle的代码,我要使用用户定义的异常或错误代码,而不是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;
答案 0 :(得分:1)
Postgres中没有直接等效项。
您唯一的选择是检查error code。使用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 ...