gibt es eine Möglichkeite alle Funktionen in einem Schema nach bestimmten enthaltenem Text zu durchsuchen ?
Also Problem ist folgendes. Ich musste Namen von Feldern in einigen Tabelle ändern bzw. ergänzen. Dazu muss ich allerdings wissen in welchen Funktionen Joins auf diese Tabellen verwendet werden um diese auch umstellen zu können.
Werden die funktionen auch in einer Tabelle abgelegt die ich dann nach dem Stichwort, also z.B. dem Namen meiner gesuchten Tabelle, durchsuchen kann???
In der Mailingliste [GENERAL] zeigte Kenneth Tanzer am 28 Mar 2008 sogar eine nette Funktion, sich den Code einer speziellen Funktion anzeigen zu lassen, ich kipp das mal hier rein:
CREATE FUNCTION function_source( char ) RETURNS text AS $$
DECLARE
funcname ALIAS FOR $1;
source TEXT;
BEGIN
SELECT INTO source replace(p.prosrc,E'\x09',' ')
FROM pg_catalog.pg_proc p
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = p.pronamespace
LEFT JOIN pg_catalog.pg_language l ON l.oid = p.prolang
JOIN pg_catalog.pg_roles r ON r.oid = p.proowner
WHERE p.prorettype <> 'pg_catalog.cstring': :p g_catalog.regtype
AND (p.proargtypes[0] IS NULL
OR p.proargtypes[0] <> 'pg_catalog.cstring': :p g_catalog.regtype)
AND NOT p.proisagg
AND p.proname ~ ( '^(' || funcname || ')$' )
AND pg_catalog.pg_function_is_visible(p.oid) ;
RETURN source;
END;$$ language 'plpgsql';
Ansonsten: Datenbank komplett dumpen und mit deinem bevorzugten Editor den Dump öffnen. Dann kannst du die Suchfunktion verwenden und auch gleich die Änderungen vornehmen
Kann es sein, daß Aufwand und Nutzen hier doch etwas in Schieflage geraten, zumal eine Änderung im Dump ja nicht wirklich Wirkung hat… oder was das Dein Beitrag zum 1. April?
Huch? Er muss, wenn er die Funktion ändert, diese auch wieder einspielen. Also hat er den Source der Funktion gleich zur Hand.
Viel praktischer geht es doch wohl nicht, oder?