从 PLPGSQL 中的 EXECUTE 获取响应

Get response from EXECUTE in PLPGSQL

我设置了一个使用 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语句没有执行,会打印一条通知。但是我也想知道它是什么时候执行成功的。 我怎样才能捕获和 RAISE EXECUTE 语句的 return 消息?

信息:我正在使用 Azure Database for Postgres,无法访问配置文件。

举一个NOTICE:

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 格式。