Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Melewati Berbilang Nilai kepada Parameter Tunggal dalam Fungsi PostgreSQL?

Bagaimanakah Saya Boleh Melewati Berbilang Nilai kepada Parameter Tunggal dalam Fungsi PostgreSQL?

Mary-Kate Olsen
Lepaskan: 2025-01-10 08:11:41
asal
224 orang telah melayarinya

How Can I Pass Multiple Values to a Single Parameter in a PostgreSQL Function?

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

Sintaks parameter VARIADIC adalah seperti berikut:

<code class="language-sql">CREATE OR REPLACE FUNCTION 函数名(VARIADIC 参数数据类型)</code>
Salin selepas log masuk

Di mana, VARIADIC menunjukkan bahawa parameter boleh menerima berbilang nilai. 参数数据类型 Menentukan jenis data nilai yang akan dihantar.

Contoh hantaran nilai berbilang

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>
Salin selepas log masuk

Fungsi ini boleh dipanggil dengan menghantar nilai integer berbilang yang dipisahkan dengan koma:

<code class="language-sql">SELECT * FROM test(270, 378);</code>
Salin selepas log masuk

Sintaks alternatif untuk menggunakan tatasusunan

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>
Salin selepas log masuk

Cadangan pengoptimuman prestasi lain

  • Gunakan hujah negatif fungsi right() untuk mengalih keluar aksara pada permulaan rentetan, yang lebih pantas daripada menggunakan fungsi substring().
  • Elakkan menggunakan petikan berganda di sekitar nama lajur, seperti "DeleteFlag".
  • Gunakan jenis data boolean yang sesuai untuk mewakili bendera, bukannya jenis data aksara, seperti text.

Fungsi yang dioptimumkan

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan