Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menggugurkan Semua Fungsi Terlebih Dengan Nama dengan Selamat dalam PostgreSQL?
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.
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
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$;
Panggil fungsi seperti berikut untuk menggugurkan semua fungsi yang sepadan dengan nama yang ditentukan:
SELECT f_delfunc('my_function_name');
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!