Postgres PGSQL中的奇怪异常处理

问题描述 投票:1回答:1

我正试图了解PGSQL中的异常处理,但...

案例1:

CREATE OR REPLACE PROCEDURE ins ()
AS $$ DECLARE
i INT;
BEGIN
insert into scott.emp (empno) values (9000);
commit;
i:=1/0;
EXCEPTION WHEN OTHERS THEN
--rollback;
END $$ LANGUAGE plpgsql;

call ins();

我想这是插入行,但不是

案例2:

CREATE OR REPLACE PROCEDURE ins ()
AS $$ DECLARE
i INT;
BEGIN
insert into scott.emp (empno) values (9000);
commit;
--i:=1/0;
EXCEPTION WHEN OTHERS THEN
--rollback;
END $$ LANGUAGE plpgsql;

call ins();

现在,没有div被零除,但是表中没有行

案例3:

CREATE OR REPLACE PROCEDURE ins ()
    AS $$ DECLARE
    i INT;
    BEGIN
    insert into scott.emp (empno) values (9000);
    commit;
    --i:=1/0;
    --EXCEPTION WHEN OTHERS THEN
    --rollback;
    END $$ LANGUAGE plpgsql;

    call ins();

现在插入行。似乎Problen是我的异常块,但为什么呢?

谢谢。马可]

我试图理解PGSQL中的异常处理,但是...情况1:创建或替换过程ins()AS $$ DECLARE i INT;将BEGIN插入scott.emp(empno)值(9000);承诺; i:= 1/0; ...

postgresql exception block
1个回答
0
投票

毫无意义地抛出错误消息确实会使调试困难。

© www.soinside.com 2019 - 2024. All rights reserved.