Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menggugurkan Semua Fungsi Terlebih Dengan Nama dengan Selamat dalam PostgreSQL?

Bagaimana untuk Menggugurkan Semua Fungsi Terlebih Dengan Nama dengan Selamat dalam PostgreSQL?

Patricia Arquette
Lepaskan: 2024-12-29 04:20:10
asal
969 orang telah melayarinya

How to Safely Drop All Overloaded Functions by Name in PostgreSQL?

Menggugurkan Fungsi tanpa Nombor/Jenis Parameter Tertentu

Apabila mengurus fungsi yang disimpan dalam fail teks, menambah atau mengubah suai parameter fungsi boleh membuat lebihan beban. Memadam fungsi asal memerlukan penyenaraian secara manual semua jenis parameter, yang boleh menyusahkan.

Pertanyaan Asas

Untuk menangani ini, pertanyaan berikut menjana pernyataan DDL untuk menggugurkan semua fungsi dengan nama yang diberikan, tanpa mengira daripada parameter:

SELECT 'DROP FUNCTION ' || oid::regprocedure
FROM   pg_proc
WHERE  proname = 'my_function_name'  -- function name without schema-qualification
AND    pg_function_is_visible(oid);  -- restrict to current search path
Salin selepas log masuk

Fungsi

Untuk pelaksanaan segera daripada pernyataan yang dijana, fungsi PL/pgSQL berikut boleh digunakan:

CREATE OR REPLACE FUNCTION f_delfunc(_name text, OUT functions_dropped int)
LANGUAGE plpgsql AS
$func$
-- drop all functions with given _name in the current search path, regardless of function parameters
DECLARE
   _sql text;
BEGIN
   SELECT count(*)::int
        , 'DROP FUNCTION ' || string_agg(oid::regprocedure::text, '; DROP FUNCTION ')
   FROM   pg_catalog.pg_proc
   WHERE  proname = _name
   AND    pg_function_is_visible(oid)  -- restrict to current search path
   INTO   functions_dropped, _sql;     -- count only returned if subsequent DROPs succeed

   IF functions_dropped > 0 THEN       -- only if function(s) found
     EXECUTE _sql;
   END IF;
END
$func$;
Salin selepas log masuk

Panggil fungsi seperti berikut untuk menggugurkan semua fungsi yang sepadan dengan nama yang ditentukan:

SELECT f_delfunc('my_function_name');
Salin selepas log masuk

Fungsi kembali bilangan fungsi digugurkan atau 0 jika tiada yang ditemui.

Atas ialah kandungan terperinci Bagaimana untuk Menggugurkan Semua Fungsi Terlebih Dengan Nama dengan Selamat dalam 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