Я работаю над утилитой, которая использует шаблоны для создания слоя доступа к данным из базы данных Postgres. В рамках этого я пытаюсь динамически обнаружить типы возвращаемых хранимых процедур. Это достаточно просто в простых случаях, когда возвращается один стандартный тип, но я с трудом возвращаюсь к определенному пользователем типу.
Буду признателен, если кто-нибудь предоставит необходимый SQL для возврата этих данных.
Спасибо
Mark
Я ценю ответы, которые у меня есть, которые эффективно сводятся к следующему SQL
SELECT p.proname, t.typname, p,proretset
FROM pg_catalog.pg_proc p
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace
INNER JOIN pg_type t ON p.prorettype = t.oid
WHERE n.nspname = 'public'
--and proname = 'foo'
ORDER BY proname;
Это вернет имя возвращаемых типов. Однако мне все еще нужно разложить тип на свойства, которые составляют его, когда он возвращает определенный пользователем тип.
В случае, если функция возвращает запись, я не думаю, что есть какой-либо способ обнаружить ее структуру возврата, кроме вызова функции и проверки ее возвращаемых значений.