postgresql - procedure specific name rubrika: Databáze: SQL
Zdravím,
potřeboval bych poradit se systémovým katalogem postgresql.
Zjišťuji si informace o uložených procedúrách z information_schema nějak takto:
SELECT specific_name, routine_name, data_type FROM information_schema.routines
a teď chci zjistit komentáře k těm funkcím. Ty jsou, jak jsem zjistil zřejmě jen v pg_catalog a získám je nějak takto:
Tak. A já mám přetížené funkce v pgsql, třeba takto
moje_funkce(int) moje_funkce(character varying)
Takže z information schema získám dva záznamy
moje_funkce_XXXX moje_funkce int
moje_funkce_YYYY moje_funkce character varying
ale z pg_catalogu se přes to specific name neodkážu na patřičný záznam. Takže dostanu něco takovéhoto:
moje_funkce komentář_k_první funkci
moje_funkce komentář_k_druhé_funkci
Řešení znám, můžu předělat tu část aplikace, kde vyhledávám v information_schema a používat jen pg_catalog, ze kterého také zjistím potřebné informace. Ale to se mi nechce.
Je nějaké snadnější řešení?
Když svůj dotaz rozšíříte o schéma parameters - které popisuje parametry funkcí, tak pak můžete jednoznačně určit hledanou funkci. Tyto pohledy mají sloupec specific_name, který je v pg názevfunkce_oid - z něj můžete získat oid - a potažmo komentář.
Ve chvíli, kdy už stejně přistupujete k pg_catalogu, tak podle mne není důvod to udělat kompletně nad pg_catalogem - navíc pg obsahuje pomocné datové typy, které zjednodušují vyhledávání v katalogu
select 'moje_func(int)'::regprocedure::oid;
Pro plný přístup na Devel.cz se prosím přihlaste:
Nebo se přihlaste jménem a heslem: