我想为 postgresql 10 编写函数,以授予指定用户对所有数据库的只读访问权限(应该从超级用户运行)
但是我在数据库切换部分有困难。我尝试在游标内切换数据库,但出现我无法理解的错误。如何更正我的脚本?
上下文:执行时的 PL/pgSQL 函数 inline_code_block
DO $$
DECLARE query text;
cursor cursor
FOR
SELECT '\c '||datname ||';' from pg_database;
BEGIN
OPEN cursor;
LOOP
FETCH cursor INTO query;
EXIT WHEN NOT FOUND;
--raise notice 'Value: %',query;
EXECUTE query;
END LOOP;
CLOSE cursor;
END $$;
PL/pgSQL 是服务器语言。
\c
meta 命令是 psql 功能。\c
PostgreSQL 服务器对命令一无所知。这是某些客户端应用程序的任务。不可能读取或更改另一个数据库中的某些内容。始终只为一个数据库打开连接。
但是,您可以使用
dblink
打开与另一个数据库的连接并在该数据库中启动任意命令的执行。dblink 将充当一个简单的 libpq 客户端。