我正在编写一个脚本来改变postgres的所有功能(更改每个函数的所有者).我能够使用postgres查询列出所有函数名称,但不能列出每个函数的参数.
如果我得到以下任何问题的解决方案,我的问题将得到解决:
a_h*_*ame 11
有没有办法在每个函数中列出参数的数据类型.
是的,使用pg_get_function_identity_arguments()功能:
以下将创建一个SQL脚本来更改someschema架构中的所有函数:
select 'alter function '||nsp.nspname||'.'||p.proname||'('||pg_get_function_identity_arguments(p.oid)||') owner to newowner;'
from pg_proc p
join pg_namespace nsp ON p.pronamespace = nsp.oid
where nsp.nspname = 'someschema';
Run Code Online (Sandbox Code Playgroud)
您可以将其输出假脱机到文件中,然后运行该生成的脚本.
如果您的函数名称需要引用,则可能需要使用quote_ident连接函数名称.
您可以将所有内容包装到函数中,并使用动态SQL,以便在需要定期的情况下使生活更轻松.
| 归档时间: |
|
| 查看次数: |
10901 次 |
| 最近记录: |