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

Postgres: how to declare user type variable?

我想写一个小脚本来授予权限。如果我直接在每个查询中输入用户,脚本就可以工作,但使用变量更有效,但我找不到将其声明为什么类型。

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 $$

为此您需要动态 SQL:

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

第二个语句的工作方式类似。