Fungsi dengan Parameter Input Boleh Ubah
Dalam PostgreSQL, prosedur dan fungsi tersimpan boleh ditakrifkan untuk mengendalikan parameter input berubah. Ini membolehkan fleksibiliti yang lebih besar apabila melaksanakan operasi pangkalan data.
Satu pendekatan untuk mengendalikan parameter input pembolehubah adalah untuk mencipta fungsi berasingan untuk setiap tujuan. Walau bagaimanapun, ini boleh mengakibatkan percambahan fungsi, terutamanya untuk jadual dengan banyak lajur.
Pendekatan alternatif adalah untuk menentukan fungsi tunggal yang menggunakan parameter mod untuk menentukan parameter input khusus yang akan digunakan. Pendekatan ini lebih cekap dan mengelakkan keperluan untuk berbilang fungsi.
Contoh
Pertimbangkan fungsi berikut untuk mengemas kini jadual tapak dengan maklumat tapak yang ditentukan pengguna:
CREATE OR REPLACE FUNCTION update_site( mode integer, name character varying, city character varying, telephone integer, ) RETURNS integer AS $$ BEGIN IF mode = 0 THEN BEGIN UPDATE "Sites" SET ("City","Telephone") = (city,telephone) WHERE "SiteName" = name; RETURN 1; EXCEPTION WHEN others THEN RAISE NOTICE 'Error on site update: %, %',SQLERRM,SQLSTATE; RETURN 0; END; ELSIF mode = 1 THEN BEGIN UPDATE "Sites" SET "City" = city WHERE "SiteName" = name; RETURN 1; EXCEPTION WHEN others THEN RAISE NOTICE 'Error on site update: %, %',SQLERRM,SQLSTATE; RETURN 0; END; ELSIF mode = 2 THEN BEGIN UPDATE "Sites" SET "Telephone" = telephone WHERE "SiteName" = name; RETURN 1; EXCEPTION WHEN others THEN RAISE NOTICE 'Error on site update: %, %',SQLERRM,SQLSTATE; RETURN 0; END; ELSE RAISE NOTICE 'Error on site update: %, %',SQLERRM,SQLSTATE; RETURN 0; END IF; END; $$ LANGUAGE plpgsql;
Fungsi ini boleh mengendalikan tiga mod:
Dengan menggunakan parameter mod, kemas kini yang diingini boleh dilakukan dengan panggilan fungsi tunggal, tanpa memerlukan berbilang fungsi.
Nilai Lalai untuk Parameter
Pilihan lain untuk mengendalikan parameter input pembolehubah ialah menggunakan nilai lalai. Ini membolehkan parameter pilihan, tanpa memerlukan parameter mod. Sebagai contoh, fungsi berikut hanya akan mengemas kini bandar jika ia disediakan:
CREATE OR REPLACE FUNCTION update_site( name character varying, city character varying DEFAULT NULL, telephone integer DEFAULT NULL, ) RETURNS integer AS $$ BEGIN UPDATE "Sites" SET ("City", "Telephone") = (city, telephone) WHERE "SiteName" = name; RETURN 1; EXCEPTION WHEN others THEN RAISE NOTICE 'Error on site update: %, %',SQLERRM,SQLSTATE; RETURN 0; END; $$ LANGUAGE plpgsql;
Pendekatan terbaik untuk mengendalikan parameter input berubah bergantung pada keperluan khusus aplikasi. Jika parameter input berbeza dengan ketara, menggunakan parameter mod atau berbilang fungsi mungkin diperlukan. Walau bagaimanapun, jika parameter input adalah konsisten, menggunakan nilai lalai boleh memberikan penyelesaian yang lebih mudah dan cekap.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengendalikan Parameter Input Pembolehubah dengan Cekap dalam Fungsi PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!