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中文網其他相關文章!