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

时间:2018-11-14 23:58:35

标签: postgresql

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

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

PostgreSQL中是否有等效项?

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

原来,如果同一功能名称存在于多个模式中,那么我还需要检查模式。

这是更新的查询:

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';