PostgreSQL menggunakan pernyataan RETURN QUERY
untuk mengembalikan hasil pertanyaan dari dalam fungsi. Kaedah ini amat berguna apabila anda memerlukan hasil pertanyaan sebagai sebahagian daripada output fungsi.
Pertimbangkan fungsi berikut:
<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>
Fungsi ini cuba mengembalikan hasil pertanyaan, tetapi tiada bahagian penting: pernyataan RETURN QUERY
.
Untuk mengembalikan hasil pertanyaan, gunakan pernyataan RETURN QUERY
seperti berikut:
<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>
Untuk melaksanakan fungsi ini, anda boleh menggunakan pernyataan berikut:
<code class="language-sql">SELECT * FROM word_frequency(123);</code>
Ini akan mengembalikan jadual yang mengandungi token
teks, kiraan dan nisbah untuk setiap perkataan dalam jadual.
Atas ialah kandungan terperinci Bagaimana untuk Mengembalikan Hasil Pertanyaan daripada Fungsi PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!