Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengembalikan Keputusan Pertanyaan SELECT dengan betul daripada Fungsi PostgreSQL?
Kembalikan hasil pertanyaan SELECT dalam fungsi PostgreSQL
Dalam PostgreSQL, menggunakan fungsi untuk mengembalikan hasil pertanyaan SELECT memerlukan pemahaman sintaks yang sesuai dan jenis pulangan. Kami akan memeriksa salah satu fungsi yang disediakan dan membimbing anda tentang cara mendapatkan semula hasil pertanyaan dengan betul.
Fungsi yang dimaksudkan wordFrequency
pada masa ini tidak mempunyai pernyataan pulangan yang betul. Untuk menyelesaikan masalah ini, kami akan menggunakan sintaks RETURN QUERY
.
Fungsi yang diperbetulkan:
<code class="language-sql">CREATE OR REPLACE FUNCTION wordFrequency(_max_tokens integer) RETURNS SETOF RECORD AS $$ BEGIN RETURN QUERY SELECT text, count(*), 100.0 / _max_tokens * count(*) AS ratio FROM ( SELECT text FROM token WHERE chartype = 'ALPHABETIC' LIMIT _max_tokens ) AS tokens GROUP BY text ORDER BY count DESC; END; $$ LANGUAGE plpgsql;</code>
Isi penting:
RETURN QUERY
membolehkan anda mengembalikan secara langsung hasil pertanyaan SELECT. SETOF RECORD
menunjukkan bahawa fungsi akan mengembalikan satu set rekod. text
dan count(*)
) mesti sepadan dengan nama lajur dalam pertanyaan. Kami menambah AS ratio
untuk memberikan nama yang tidak jelas pada lajur ketiga dan mengelakkan kekaburan. Pada masa yang sama, tukar 100
kepada 100.0
untuk mengelakkan kehilangan ketepatan yang disebabkan oleh pembahagian integer. Fungsi panggilan:
<code class="language-sql">SELECT * FROM wordFrequency(123);</code>
Selain itu, menggunakan RETURNS TABLE
untuk mentakrifkan jenis pemulangan secara eksplisit adalah lebih praktikal daripada mengembalikan rekod generik kerana ia menghapuskan keperluan untuk menentukan senarai definisi lajur untuk setiap panggilan fungsi. Contohnya:
<code class="language-sql">CREATE OR REPLACE FUNCTION wordFrequency(_max_tokens integer) RETURNS TABLE (text TEXT, cnt BIGINT, ratio NUMERIC) AS $$ BEGIN RETURN QUERY SELECT text, count(*), 100.0 / _max_tokens * count(*) FROM ( SELECT text FROM token WHERE chartype = 'ALPHABETIC' LIMIT _max_tokens ) AS tokens GROUP BY text ORDER BY count DESC; END; $$ LANGUAGE plpgsql;</code>
Nota Penting:
Dengan mengikut langkah ini, anda boleh menggunakan fungsi dalam PostgreSQL dengan cekap untuk mengembalikan hasil pertanyaan SELECT.
Atas ialah kandungan terperinci Bagaimana untuk Mengembalikan Keputusan Pertanyaan SELECT dengan betul daripada Fungsi PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!