获取PLPGSQL中EXECUTE的响应



我设置了一个小查询,使用DO块来动态编辑多个表。

DO
$$
DECLARE
_table varchar[];
loop_item text;
BEGIN
SELECT array_agg(table_name::TEXT) FROM information_schema.tables 
INTO _table
WHERE table_schema = 'public';
FOREACH loop_item IN ARRAY "_table" 
LOOP
IF loop_item != 'test' THEN     
EXECUTE format('ALTER TABLE %s
ADD COLUMN IF NOT EXISTS new_column varchar;', loop_item);
END IF;
END LOOP;
END;
$$

如果EXECUTE语句没有执行,则打印一个通知。但我也想知道它是什么时候成功执行的。如何捕获并引发EXECUTE语句的返回消息?

信息:我正在使用Azure数据库的Postgres,没有访问配置文件。

Raise aNOTICE:

IF loop_item != 'test' THEN     
EXECUTE format('ALTER TABLE %I
ADD COLUMN IF NOT EXISTS new_column varchar;', loop_item);
RAISE NOTICE 'Table %s altered', loop_item;
END IF;

你的原始代码很容易受到SQL注入,你应该使用%I格式。

相关内容

  • 没有找到相关文章

最新更新