PostgreSQL如何检查函数中是否存在参数



在SQL Server中,我可以验证给定存储过程中是否存在特定参数,如下所示:

SELECT [name]
FROM sys.parameters 
WHERE object_id = object_id('MyStoredProc')
AND [name]='@paramenter_im_checking'

PostgreSQL中有对等的吗?

您可以在系统目录pg_proc中查询函数或过程的命名参数:

SELECT 'parameter_name' =ANY (proargnames)
FROM pg_catalog.pg_proc
WHERE proname = 'function_name';

这将返回TRUEFALSE,具体取决于函数或过程是否具有该名称的参数。

事实证明,我还需要检查架构,以防多个架构中存在相同的函数名。

以下是更新后的查询:

SELECT 'parameter_name' = ANY (proargnames)
FROM pg_catalog.pg_proc p INNER JOIN pg_catalog.pg_namespace n 
ON n.oid = p.pronamespace
WHERE n.nspname='schema_name'
AND proname = 'function_name';

最新更新