首页 > 解决方案 > SQL/PostgreSQL - 在存储过程中的“异常”块未捕获的查询中观察到错误

问题描述

我正在尝试创建一个要在 PostgreSQL DBMS 中使用的存储过程。

此存储过程的目的是删除所有出现以下问题的记录...

询问:

my_database=# SELECT file INTO my_file_now FROM public.my_datatable WHERE my_id='2fdf5297-8d4a-38bc-bb26-b8a4b7ba47ec';
ERROR:  missing chunk number 0 for toast value 3483039 in pg_toast_3473493

基于上述行为,我创建了以下存储过程:

存储过程:

DO $f$
DECLARE
    my_file_now BYTEA;
    my_id_now UUID;
BEGIN
FOR my_id_now IN SELECT my_id FROM public.my_datatable LOOP
    BEGIN
        SELECT file
            INTO my_file_now
            FROM public.my_datatable WHERE my_id=my_id_now;
        EXCEPTION
            WHEN OTHERS THEN
            RAISE NOTICE 'CORRUPTED MY_ID - % ', my_id_now;
            DELETE FROM public.my_datatable WHERE my_id=my_id_now;
    END;
END LOOP;
END;
$f$;

问题:为什么查询中观察到的错误没有被存储过程中的“EXCEPTION”块捕获?

谢谢!=D

标签: sqlpostgresqlstored-procedures

解决方案


我认为错误异常块捕获。

您观察到的错误来自DELETE异常处理程序中的语句。


推荐阅读