在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';
这将返回TRUE
或FALSE
,具体取决于函数或过程是否具有该名称的参数。
事实证明,我还需要检查架构,以防多个架构中存在相同的函数名。
以下是更新后的查询:
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';