我正在编写一个脚本来改变postgres的所有功能(更改每个函数的所有者).我能够使用postgres查询列出所有函数名称,但不能列出每个函数的参数.
>有没有办法在每个函数中列出参数的数据类型.
>我们有任何改变功能的方法,而不是传递参数类型,我可以发送一些外卡.
例如,我可以写
ALTER FUNCTION schemaname.func(text)拥有’newowner’的所有者
如:
ALTER FUNCTION schemaname.func(*)拥有者’newowner’.
解决方法
Is there any way to list down parameters’ data type in each of the function.
是的,使用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';