PostgreSQL fungsi satu parameter lulus berbilang nilai
PostgreSQL menyediakan cara mudah untuk menghantar berbilang nilai ke fungsi menggunakan satu parameter, yang boleh dicapai dengan menggunakan parameter VARIADIC.
Sintaks parameter VARIADIC adalah seperti berikut:
<code class="language-sql">CREATE OR REPLACE FUNCTION 函数名(VARIADIC 参数数据类型)</code>
Di mana, VARIADIC
menunjukkan bahawa parameter boleh menerima berbilang nilai. 参数数据类型
Menentukan jenis data nilai yang akan dihantar.
Fungsi berikut menerima berbilang nilai integer:
<code class="language-sql">CREATE OR REPLACE FUNCTION test(VARIADIC int[]) RETURNS TABLE (job_id int, job_reference int, job_job_title text, job_status text) AS $$ BEGIN RETURN QUERY SELECT * FROM jobs WHERE job_id = ANY() ORDER BY job_job_title; END; $$ LANGUAGE plpgsql;</code>
Fungsi ini boleh dipanggil dengan menghantar nilai integer berbilang yang dipisahkan dengan koma:
<code class="language-sql">SELECT * FROM test(270, 378);</code>
Dalam PostgreSQL 9.1 atau lebih baru, anda juga boleh memanggil fungsi parameter VARIADIC secara langsung menggunakan jenis tatasusunan. Kod berikut adalah bersamaan dengan contoh sebelumnya:
<code class="language-sql">SELECT * FROM test(VARIADIC '{1, 2, 3}'::int[]);</code>
right()
untuk mengalih keluar aksara pada permulaan rentetan, yang lebih pantas daripada menggunakan fungsi substring()
. "DeleteFlag"
. text
. Menggunakan pengoptimuman di atas, berikut ialah versi diperbaik bagi fungsi asal:
<code class="language-sql">CREATE OR REPLACE FUNCTION f_test(VARIADIC int[]) RETURNS TABLE (id int, reference int, job_title text, status text) AS $func$ SELECT id, reference, job_title, ltrim(right(status, -2)) AS status FROM company c JOIN job j USING (id) WHERE c.active AND NOT c.delete_flag AND NOT j.delete_flag AND id = ANY() ORDER BY job_title; $func$ LANGUAGE sql;</code>
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melewati Berbilang Nilai kepada Parameter Tunggal dalam Fungsi PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!