我想写一个execute块,可以用于多个结构相似的数据库,有些数据库没有一个或多个表。我用这种东西
execute block as
begin
delete from table1;
delete from table2;
delete from table3;
delete from table4;
delete from table5;
end
这适用于所有表的base,但当表丢失时,execute块停止。我想在缺少表时使用这个执行块,这样就不必提交缺少的表。
我想写一个execute块,可以用于多个结构相似的数据库,有些数据库没有一个或多个表。我用这种东西
execute block as
begin
delete from table1;
delete from table2;
delete from table3;
delete from table4;
delete from table5;
end
这适用于所有表的base,但当表丢失时,execute块停止。我想在缺少表时使用这个执行块,这样就不必提交缺少的表。
1条答案
按热度按时间pbgvytdp1#
你不能这样做。表中引用的表
delete
的psql语句必须存在execute block
在它运行之前成功编译。相反,您需要使用包含
execute statement
动态执行语句和when any
异常处理程序以继续处理任何错误。例如,类似于:
您还可以在动态执行delete之前检查系统表中是否存在。例如,类似于:
中的表名
IN
-子句必须与存储的名称匹配(对于像table1
意思是大写TABLE1
). 这个replace(tablename, '"', '""')
只是为了完整性,在表名中转义可能的双引号。