PostgreSQL utilise l'instruction RETURN QUERY
pour renvoyer les résultats d'une requête à partir d'une fonction. Cette méthode est particulièrement utile lorsque vous avez besoin des résultats de la requête dans le cadre de la sortie de la fonction.
Considérez la fonction suivante :
<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>
Cette fonction tente de renvoyer les résultats de la requête, mais il manque une partie cruciale : l'instruction RETURN QUERY
.
Pour renvoyer les résultats de la requête, utilisez l'instruction RETURN QUERY
comme suit :
<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>
Pour exécuter cette fonction, vous pouvez utiliser l'instruction suivante :
<code class="language-sql">SELECT * FROM word_frequency(123);</code>
Cela renverra un tableau contenant token
le texte, le nombre et le rapport pour chaque mot du tableau.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!