Heim >Datenbank >MySQL-Tutorial >Wie gebe ich eine virtuelle Tabelle von einer Postgres-Funktion zurück?

Wie gebe ich eine virtuelle Tabelle von einer Postgres-Funktion zurück?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-27 10:28:10722Durchsuche

How to Return a Virtual Table from a Postgres Function?

Virtuelle Tabelle von Funktion in Postgres zurückgeben

In Postgres erfordert das Erstellen einer benutzerdefinierten virtuellen Tabelle mit mehreren Zeilen und Spalten mithilfe einer Funktion eine bestimmte Syntax. In diesem Artikel wird gezeigt, wie Sie eine Funktion korrekt schreiben, die eine Reihe von Datensätzen zurückgibt, die einer virtuellen Tabelle ähneln.

Korrekte Syntax

Um eine Funktion zu definieren, die eine virtuelle Tabelle mit drei zurückgibt Ganzzahlspalten verwenden Sie das folgende PL/pgSQL Code:

CREATE OR REPLACE FUNCTION f_foo()
  RETURNS TABLE (a int, b int, c int) AS
$func$
BEGIN
RETURN QUERY VALUES
  (1,2,3)
, (3,4,5)
, (3,4,5)
;
END
$func$  LANGUAGE plpgsql IMMUTABLE ROWS 3;

Erklärung

  • RÜCKGABETABELLE: Gibt an, dass die Funktion einen Ad-hoc-Zeilentyp zurückgibt.
  • ABFRAGEWERTE ZURÜCKGEBEN: Wird verwendet, um mehrere Zeilen zurückzugeben unter Verwendung des VALUES-Ausdrucks.
  • ZEILEN 3: Deklariert die Anzahl der zurückgegebenen Zeilen und unterstützt den Abfrageplaner bei der Optimierung der Ausführung.
  • IMMUTABLE: Gibt das an Das Ergebnis ändert sich nie, was eine Leistungsoptimierung ermöglicht.

Alternative Optionen

Einfaches SQL: Für einfache Szenarien kann eine einfache SQL-Anweisung ausreichen:

VALUES (1,2,3), (3,4,5), (3,4,5)

SQL-Funktion: Das können Sie Schließen Sie die obige Anweisung auch in eine SQL ein Funktion:

CREATE OR REPLACE FUNCTION f_foo()
   RETURNS TABLE (a int, b int, c int) AS
$func$
   VALUES (1, 2, 3)
        , (3, 4, 5)
        , (3, 4, 5);
$func$  LANGUAGE sql IMMUTABLE ROWS 3;

Verwendung

Um die virtuelle Tabelle abzurufen:

SELECT * FROM f_foo();

Das obige ist der detaillierte Inhalt vonWie gebe ich eine virtuelle Tabelle von einer Postgres-Funktion zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn