Heim > Datenbank > MySQL-Tutorial > Wie gebe ich Abfrageergebnisse von einer PostgreSQL-Funktion zurück?

Wie gebe ich Abfrageergebnisse von einer PostgreSQL-Funktion zurück?

Patricia Arquette
Freigeben: 2025-01-17 10:16:21
Original
762 Leute haben es durchsucht

How to Return Query Results from a PostgreSQL Function?

Abfrageergebnisse in der PostgreSQL-Funktion zurückgeben

PostgreSQL verwendet die RETURN QUERY-Anweisung, um Abfrageergebnisse innerhalb einer Funktion zurückzugeben. Diese Methode ist besonders nützlich, wenn Sie die Abfrageergebnisse als Teil der Funktionsausgabe benötigen.

Beispiel

Betrachten Sie die folgende Funktion:

<code class="language-sql">CREATE OR REPLACE FUNCTION wordFrequency(maxTokens INTEGER)
  RETURNS SETOF RECORD AS
$$
BEGIN
  -- 执行查询
  SELECT text, count(*), 100 / maxTokens * count(*)
  FROM (
    SELECT text
    FROM token
    WHERE chartype = 'ALPHABETIC'
    LIMIT maxTokens
  ) AS tokens
  GROUP BY text
  ORDER BY count DESC;
END
$$
LANGUAGE plpgsql;</code>
Nach dem Login kopieren

Diese Funktion versucht, Abfrageergebnisse zurückzugeben, es fehlt jedoch ein entscheidender Teil: die RETURN QUERY-Anweisung.

Lösung

Um Abfrageergebnisse zurückzugeben, verwenden Sie die RETURN QUERY-Anweisung wie folgt:

<code class="language-sql">CREATE OR REPLACE FUNCTION word_frequency(_max_tokens int)
  RETURNS TABLE (txt   text    -- 函数体中显示为 OUT 参数
               , cnt   bigint
               , ratio bigint)
  LANGUAGE plpgsql AS
$func$
BEGIN
   RETURN QUERY
   SELECT t.txt
        , count(*) AS cnt                 -- 列别名仅在此查询中可见
        , (count(*) * 100) / _max_tokens  -- 添加了括号
   FROM  (
      SELECT t.txt
      FROM   token t
      WHERE  t.chartype = 'ALPHABETIC'
      LIMIT  _max_tokens
      ) t
   GROUP  BY t.txt
   ORDER  BY cnt DESC;
END
$func$;</code>
Nach dem Login kopieren

Ausführen

Um diese Funktion auszuführen, können Sie die folgende Anweisung verwenden:

<code class="language-sql">SELECT * FROM word_frequency(123);</code>
Nach dem Login kopieren

Dadurch wird eine Tabelle zurückgegeben, die token den Text, die Anzahl und das Verhältnis für jedes Wort in der Tabelle enthält.

Notizen

  • OUT-Parameter verwenden: Die im Funktionsheader definierten OUT-Parameter müssen genau mit den von der Abfrage zurückgegebenen Spalten übereinstimmen.
  • OUT-Parameter sorgfältig benennen: Verwenden Sie eindeutige Namen, um mögliche Namenskonflikte zu vermeiden. Vermeiden Sie die Verwendung reservierter Wörter oder primitiver Datentypen.
  • Verwenden Sie Klammern für die Division ganzer Zahlen: Wenn Sie ganze Zahlen dividieren, schließen Sie die Divisionsoperation in Klammern ein, um Rundungsfehler zu minimieren.
  • Erwägen Sie numerische Datentypen: Bei Operationen mit Gleitkommazahlen oder Prozentsätzen bietet die Verwendung numerischer Datentypen eine höhere Präzision.

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

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage