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.
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>
Diese Funktion versucht, Abfrageergebnisse zurückzugeben, es fehlt jedoch ein entscheidender Teil: die RETURN QUERY
-Anweisung.
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>
Um diese Funktion auszuführen, können Sie die folgende Anweisung verwenden:
<code class="language-sql">SELECT * FROM word_frequency(123);</code>
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.
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!