我正在尝试创建一个用于 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” block 捕获?
谢谢! =D
最佳答案
我认为错误被异常 block 捕获。
您观察到的错误来自异常处理程序中的 DELETE
语句。
关于SQL/PostgreSQL - 在 QUERY 中观察到的错误未被存储过程中的 "EXCEPTION" block 捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59754440/