PostgreSQL как проверить, существует ли параметр в функции - PullRequest
0 голосов
/ 15 ноября 2018

В SQL Server я могу проверить, существует ли определенный параметр в данной хранимой процедуре, например:

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

Есть ли эквивалент в PostgreSQL?

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Оказалось, что мне также нужно проверить схему на случай, если одно и то же имя функции существует в нескольких схемах.

Вот обновленный запрос:

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';
0 голосов
/ 15 ноября 2018

Вы можете запросить системный каталог pg_proc для именованных параметров функции или процедуры:

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

Это вернет TRUE или FALSE, в зависимости от того, имеет ли функция или процедурапараметр с таким именем или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...