Postgres:如何声明用户类型变量?

时间:2019-02-28 14:48:38

标签: postgresql plpgsql

我想编写一个小的脚本来授予权限。如果我直接在每个查询中键入用户的内容,该脚本就可以工作,但是使用变量会更有效,但是我找不到将其声明为哪种类型。

DO $$

DECLARE
usr ??? := myuser;

BEGIN

GRANT SELECT, INSERT, UPDATE, DELETE
ON ALL TABLES IN SCHEMA public 
TO usr;

GRANT ALL PRIVILEGES ON SCHEMA public to usr;

END $$

1 个答案:

答案 0 :(得分:1)

为此您需要动态SQL:

DO
$$DECLARE
   usr text := 'myuser' ;
BEGIN
   EXECUTE format('GRANT SELECT, INSERT, UPDATE, DELETE '
                  'ON ALL TABLES IN SCHEMA public ' 
                  'TO %I',
                  usr);
END;$$;

第二条语句的工作原理类似。