8 Stimmen

PostgreSQL - Wie kann ich den Funktionstext/Quelle in pgAdmin sehen?

Ich möchte in der Lage sein, den Code einer Funktion zu SELECT. Wenn ich diese Abfrage versuche:

select prosrc from pg_proc where proname = 'my_proc'

Ich erhalte eine leere Spalte.

Die Sache ist die, dass die Spalte prosrc den Funktionstext zu enthalten scheint. Wenn ich diese Abfrage versuche:

select proname from pg_proc where prosrc ~* 'part of Function text'

Ich erhalte die richtige Anzahl und die Namen der Funktionen. Es wird nur nicht prosrc angezeigt. Irgendeine Idee?

PostgreSQL 8.2. pgAdmin III 1.12.2.

Danke.

2voto

Jeremiah Peschka Punkte 8296

Ich bin auch auf dieses Problem gestoßen, als ich pgAdmin III auf PostgreSQL 9.0.3 verwendet habe. Für mich sieht es so aus, als ob das Problem damit zusammenhängt, dass die Zeichenkette zu lang ist, um von pgAdmin III richtig angezeigt zu werden. Wenn Sie ihn in der Eingabeaufforderung ausführen, sollte alles in Ordnung sein. Viele Datenbank-Verwaltungstools haben Probleme mit dem Abschneiden von Strings.

Interessanterweise können Sie die Ausgabe einfügen, wenn Sie die prosrc-Zelle in pgAdmin III markieren und sie mit der Tastatur kopieren. Wahrscheinlich handelt es sich um einen seltsamen Anzeigefehler.

2voto

hbn Punkte 1676

Das liegt daran, dass der Wert von prosrc beginnt oft mit einem Zeilenvorschub. Wenn Sie eine Funktion erstellen, beginnen Sie normalerweise eine neue Zeile nach dem $$ (oder $whatever$), der den Funktionstext zitiert:

CREATE FUNCTION myfunction() RETURNS integer AS $$
    SELECT 1
$$ LANGUAGE sql;

Wenn Sie das so definieren:

CREATE FUNCTION myfunction() RETURNS integer AS $$SELECT 1$$ LANGUAGE sql;

Im Funktionstext würde kein Zeilenumbruch vorkommen.

Sie können führende Zeilenumbrüche mit der Funktion ltrim abschneiden:

SELECT ltrim(prosrc, E'\x0a') FROM pg_proc WHERE proname = 'myfunction';

Wenn Sie die Zeile in PGAdmin vertikal verkleinern, können Sie auch den vollen Wert sehen.

2voto

aspdeepak Punkte 2396

In den neueren Versionen können Sie dies durch Rechtsklick und Scripts -> Create Script

Create Script

0voto

TCs Punkte 1

Datei > Optionen > Abfragetool > Abfrage-Editor > Max. Zeichen pro Spalte

Sie können sie auch einfach im Objektbrowser anzeigen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X