Rumah >pangkalan data >tutorial mysql >Bagaimanakah Nilai Lalai Boleh Meningkatkan Reka Bentuk Fungsi PostgreSQL untuk Parameter Input Boleh Ubah?

Bagaimanakah Nilai Lalai Boleh Meningkatkan Reka Bentuk Fungsi PostgreSQL untuk Parameter Input Boleh Ubah?

Patricia Arquette
Patricia Arquetteasal
2024-12-25 03:37:23511semak imbas

How Can Default Values Improve PostgreSQL Function Design for Variable Input Parameters?

Fungsi dengan Parameter Input Boleh Ubah

Apabila mencipta prosedur tersimpan (fungsi) dalam PostgreSQL, terdapat keperluan untuk mengendalikan kemas kini jadual berdasarkan input parameter. Untuk menampung parameter input pembolehubah, satu pendekatan adalah dengan memperkenalkan parameter mod. Parameter mod ini mengawal parameter tertentu yang hendak digunakan dalam pertanyaan kemas kini.

Walau bagaimanapun, pendekatan alternatif ialah menggunakan nilai lalai untuk parameter fungsi.

Nilai Lalai

Dengan mentakrifkan nilai lalai untuk parameter fungsi, anda boleh memudahkan fungsi dan meningkatkan kebolehbacaan kod. Pertimbangkan contoh berikut:

CREATE OR REPLACE FUNCTION update_site(_name text, _city text DEFAULT NULL, _telephone int DEFAULT NULL)
RETURNS int
LANGUAGE plpgsql AS
$func$
BEGIN
   IF _city IS NULL AND _telephone IS NULL THEN
      RAISE WARNING 'At least one not-null input value required!';
      RETURN;  -- nothing to update
   END IF;

   UPDATE "Sites"
   SET    "City"      = COALESCE(_city, "City")
        , "Telephone" = COALESCE(_telephone, "Telephone")
   WHERE  "SiteName"  = _name;
END
$func$;

Kelebihan Nilai Lalai:

  • Memudahkan kod fungsi: Tidak memerlukan pernyataan CASE yang kompleks atau logik bersyarat berdasarkan parameter mod.
  • Mengelakkan penamaan konflik: Menggunakan awalan garis bawah untuk parameter input menghalang pertembungan dengan nama lajur.
  • Meningkatkan kebolehbacaan: Logik fungsi yang lebih jelas dan lebih intuitif.

Penggunaan:

Fungsi yang dikemas kini ini boleh digunakan dengan pelbagai notasi panggilan:

  • Notasi Kedudukan:
SELECT update_site('foo', 'New York');  -- no telephone
  • Notasi Dinamakan:
SELECT update_site(name => 'foo', _telephone => 123);  -- no city
  • Campuran Notasi:
SELECT update_site('foo', _telephone => 123);  -- still no city

Kecekapan

Kedua-dua pendekatan, menggunakan parameter mod atau nilai lalai, boleh menjadi cekap untuk operasi kemas kini yang mudah. Walau bagaimanapun, untuk senario yang lebih kompleks, nilai lalai mungkin memberikan penyelesaian yang lebih jelas dan lebih boleh diselenggara.

Pilihan Pendekatan

Pilihan terbaik zależy pada keperluan khusus. Jika lajur ditakrifkan sebagai BUKAN NULL, nilai lalai menawarkan pendekatan yang lebih mudah dan pantas. Untuk senario yang lebih kompleks yang melibatkan pertanyaan SELECT dengan output yang berbeza-beza, pertimbangkan untuk menggunakan jenis input VARIADIC atau polimorfik dan SQL dinamik.

Atas ialah kandungan terperinci Bagaimanakah Nilai Lalai Boleh Meningkatkan Reka Bentuk Fungsi PostgreSQL untuk Parameter Input Boleh Ubah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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