PostgreSQL Susunan Berparameter Mengikut / Had dalam Fungsi Jadual
Soalan meneroka pilihan untuk memasukkan susunan mengikut dan had klausa dalam fungsi jadual PostgreSQL, menonjolkan potensi ketidakcekapan pesanan dan penghirisan di luar fungsi.
Satu penyelesaian yang dikemukakan ialah penggunaan fungsi plpgsql, yang membolehkan pembinaan dan pelaksanaan pertanyaan yang lebih kompleks melalui EXECUTE. Pendekatan ini menawarkan lebih fleksibiliti dan kawalan ke atas pertanyaan.
Untuk melaksanakan ini, fungsi plpgsql yang diubah suai boleh dibuat:
CREATE OR REPLACE FUNCTION get_stuff(_param text, _orderby text, _limit int) RETURNS SETOF stuff AS $func$ BEGIN RETURN QUERY EXECUTE ' SELECT * FROM stuff WHERE col = ORDER BY ' || quote_ident(_orderby) || ' ASC LIMIT ' USING _param, _limit; END $func$ LANGUAGE plpgsql;
Fungsi ini boleh dipanggil seperti berikut:
SELECT * FROM get_stuff('hello', 'col2', 100);
Penyelesaian ini mengelakkan kelemahan suntikan SQL dengan menggunakan quote_ident() untuk pengecam dan klausa USING untuk nilai parameter. Selain itu, RETURN QUERY EXECUTE mengembalikan hasil pertanyaan dengan cekap.
Walaupun fungsi plpgsql mungkin lebih bertele-tele daripada fungsi SQL yang ringkas, ia memberikan fleksibiliti dan prestasi yang lebih besar untuk pertanyaan yang lebih kompleks.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Klausa ORDER BY dan LIMIT Berparameter dengan Cekap dalam Fungsi Jadual PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!