PostgreSQL 使用 RETURN QUERY
语句从函数内部返回查询结果。当您需要将查询结果作为函数输出的一部分时,此方法特别有用。
考虑以下函数:
<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>
此函数尝试返回查询结果,但缺少关键部分:RETURN QUERY
语句。
要返回查询结果,请使用 RETURN QUERY
语句,如下所示:
<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>
要执行该函数,可以使用以下语句:
<code class="language-sql">SELECT * FROM word_frequency(123);</code>
这将返回一个表,其中包含 token
表中每个单词的文本、计数和比率。
以上是如何从 PostgreSQL 函数返回查询结果?的详细内容。更多信息请关注PHP中文网其他相关文章!