Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Melewati Berbilang Nilai kepada Parameter Fungsi Tunggal dalam PostgreSQL?
Untuk menghantar berbilang nilai kepada satu parameter, anda boleh menggunakan jenis data VARIADIC. Ini membolehkan anda menentukan tatasusunan nilai untuk parameter. Ubah suai fungsi berikut untuk menerima parameter VARIADIC bernama job_ids:
<code class="language-sql">CREATE OR REPLACE FUNCTION test_var(VARIADIC job_ids int[]) RETURNS TABLE ( job_id int, job_reference int, job_job_title text, job_status text ) AS $$ BEGIN RETURN QUERY SELECT jobs.id, jobs.reference, jobs.job_title, ltrim(right(jobs.status, -2)) AS status -- 使用right()函数改进字符串处理 FROM jobs INNER JOIN company c ON c.id = jobs.id -- 使用INNER JOIN改进查询效率 WHERE jobs."DeleteFlag" = '0' AND c.DeleteFlag = '0' AND c.active = '1' AND (jobs.id = ANY(job_ids) OR job_ids = '{ -1 }') -- 简化条件判断 ORDER BY jobs.job_title; END; $$ LANGUAGE plpgsql;</code>
Anda kini boleh memanggil fungsi test_var dengan menghantar tatasusunan nilai ke parameter job_ids. Contohnya:
<code class="language-sql">SELECT * FROM test_var('{270, 378}');</code>
Ini akan mengembalikan data kerja dengan ID 270 dan 378.
Selain menggunakan parameter VARIADIC, anda juga boleh menggunakan fungsi right()
dalam kombinasi dengan panjang negatif untuk memangkas aksara pada permulaan rentetan, yang lebih pantas dan lebih ringkas daripada menggunakan substring
.
Selain itu, pastikan jenis data lajur DeleteFlag
ialah boolean dan bukan teks. Ini memastikan perbandingan dan kecekapan yang betul.
Akhir sekali, fungsi f_test yang disediakan dalam jawapan menunjukkan fungsi SQL ringkas yang mengelakkan penggunaan PL/pgSQL dan menyelesaikan masalah ini. Adalah disyorkan untuk memilih kaedah pelaksanaan fungsi yang sesuai berdasarkan keperluan sebenar.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melewati Berbilang Nilai kepada Parameter Fungsi Tunggal dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!