Antworten:
Verwenden Sie pgAdmin oder pg_proc , um die Quelle Ihrer gespeicherten Prozeduren abzurufen . pgAdmin macht dasselbe.
\df+ <function_name>
in psql .
\x
Metabefehl psql verwenden, bevor Sie die Funktionsdefinition anzeigen.\x
ist auch nützlich, um Abfrageergebnisse anzuzeigen, die Datensätze mit langen Zeichenfolgen enthalten.
\ef <function_name>
in psql. Es gibt die gesamte Funktion mit bearbeitbarem Text.
;
<enter>
nachher einzugeben, um den Puffer auszuführen.
ERROR: more than one function named
SELECT prosrc FROM pg_proc WHERE proname = 'function_name';
Dies teilt dem Funktionshandler mit, wie die Funktion aufgerufen werden soll. Je nach Implementierungssprache / Aufrufkonvention kann dies der eigentliche Quellcode der Funktion für interpretierte Sprachen, ein Verknüpfungssymbol, ein Dateiname oder fast alles andere sein
psql
. Beachten Sie, dass Funktionsnamen scheinbar in Großbuchstaben geschrieben sind.
SELECT proname, prosrc, proargnames FROM pg_proc WHERE proname like '%func_name%'
. Dies zumindest auf Seite 9.6. Sie können den numerischen Code des Typs über die Eigenschaft proargtypes
abrufen, müssen ihn jedoch mit einer anderen Tabelle verknüpfen, um diesen als Namen zu erhalten.
Verwenden Sie \df
diese Option, um alle gespeicherten Prozeduren in Postgres aufzulisten.
Wenn sich jemand fragt, wie man Katalogtabellen schnell abfragt und die pg_get_functiondef()
Funktion nutzt, ist hier die Beispielabfrage:
SELECT n.nspname AS schema
,proname AS fname
,proargnames AS args
,t.typname AS return_type
,d.description
,pg_get_functiondef(p.oid) as definition
-- ,CASE WHEN NOT p.proisagg THEN pg_get_functiondef(p.oid)
-- ELSE 'pg_get_functiondef() can''t be used with aggregate functions'
-- END as definition
FROM pg_proc p
JOIN pg_type t
ON p.prorettype = t.oid
LEFT OUTER
JOIN pg_description d
ON p.oid = d.objoid
LEFT OUTER
JOIN pg_namespace n
ON n.oid = p.pronamespace
WHERE NOT p.proisagg
AND n.nspname~'<$SCHEMA_NAME_PATTERN>'
AND proname~'<$FUNCTION_NAME_PATTERN>'
pg_get_functiondef(p.oid) ilike '%indicator_loss%'
Sie können auch über phpPgAdmin abrufen, wenn Sie es in Ihrem System konfiguriert haben.
Schritt 1: Wählen Sie Ihre Datenbank aus
Schritt 2: Klicken Sie auf die Schaltfläche Suchen
Schritt 3: Ändern Sie die Suchoption in Funktionen und klicken Sie dann auf Suchen.
Sie erhalten die Liste der definierten Funktionen. Sie können Funktionen auch nach Namen suchen, hoffen, dass diese Antwort anderen hilft.
Verwenden Sie den folgenden Befehl, um den vollständigen Code (Abfrage) anzuzeigen, der in gespeicherte Prozeduren / Funktionen geschrieben wurde:
sp_helptext procedure/function_name
Fügen Sie für den Funktionsnamen und den Prozedurnamen nicht das Präfix 'dbo' hinzu. oder 'sys.'.
Fügen Sie am Ende der Prozedur oder des Funktionsnamens keine Klammern hinzu und übergeben Sie auch nicht die Parameter.
Verwenden Sie das Schlüsselwort sp_helptext und übergeben Sie dann einfach den Prozedur- / Funktionsnamen.
Verwenden Sie den folgenden Befehl, um den vollständigen Code für die Prozedur anzuzeigen:
sp_helptext ProcedureName
Verwenden Sie den folgenden Befehl, um den vollständigen Code für die Funktion anzuzeigen:
sp_helptext FunctionName
sp_helptext
in postgresql.
Normalerweise verwenden Sie eine DB-Manager-Anwendung wie pgAdmin , zu dem Objekt, an dem Sie interessiert sind, und klicken mit der rechten auf "Skript als erstellen" oder ähnliches.
Versuchen Sie dies zu tun ... ohne eine Management-App?