You*_*tan 3 postgresql permissions function plpgsql
我有一个拥有1000多个功能的数据库.我想授予某些用户执行权限.我无法手动完成,因此我想获得一个函数列表并编写代码以生成所有函数的GRANT EXECUTE脚本.我尝试了以下脚本,但这不是给我参数.我无法通过此查询获取参数.
SELECT 'GRANT EXECUTE ON FUNCTION '||nspname||'.'||proname||' TO gis;'
FROM pg_catalog.pg_namespace n
JOIN pg_catalog.pg_proc p
ON pronamespace = n.oid
WHERE nspname = 'ccdb'
Run Code Online (Sandbox Code Playgroud)
如何使用数据类型获得所需的结果?
喜欢,
GRANT EXECUTE ON FUNCTION <schema_name>.<table_name>(<list of arguments>) TO <user_name>;
Run Code Online (Sandbox Code Playgroud)
有一个方便的功能来帮助你:oidvectortypes.
SELECT format('%I.%I(%s)', ns.nspname, p.proname, oidvectortypes(p.proargtypes))
FROM pg_proc p INNER JOIN pg_namespace ns ON (p.pronamespace = ns.oid);
Run Code Online (Sandbox Code Playgroud)
显示带参数的所有函数.您可以调整该format咒语以生成任何所需的语句,如果您愿意,可以LOOP通过它将生成的语句提供到EXECUTEPL/PgSQL中.
感谢狮子座Hsu和里贾纳OBE在网上的Postgres的指出oidvectortypes.我之前编写过类似的函数,但是使用了复杂的嵌套表达式,这个函数摆脱了它的需要.
请注意,在这种情况下,您根本不需要执行任何自定义SQL生成.如果您使用的GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA myschema TO ...是最近的PostgreSQL,请使用它.
| 归档时间: |
|
| 查看次数: |
934 次 |
| 最近记录: |