Bolehkah saya Menggugurkan Fungsi dengan Wildcard, Tanpa Kira Parameter?
Pengenalan
Mengekalkan fungsi yang disimpan dalam fail teks boleh menjadi menyusahkan, terutamanya apabila menambah atau mengalih keluar parameter. Menaip susunan parameter yang tepat secara manual untuk setiap fungsi boleh menjadi membosankan. Artikel ini meneroka penyelesaian untuk menggugurkan semua fungsi dengan nama yang diberikan menggunakan kad bebas, menghapuskan keperluan untuk menentukan parameter.
Pertanyaan untuk Menggugurkan Fungsi
Untuk mencipta yang diperlukan Penyataan DDL, laksanakan pertanyaan berikut:
SELECT 'DROP FUNCTION ' || oid::regprocedure FROM pg_proc WHERE proname = 'my_function_name' -- Replace 'my_function_name' with the target function name AND pg_function_is_visible(oid); -- Restrict to the current search path
Pertanyaan menghasilkan DROP Pernyataan FUNCTION dengan jenis hujah, petikan dua kali dan layak skema. Ini memastikan tiada kelemahan suntikan SQL dan sepadan dengan laluan carian semasa.
Fungsi untuk Melaksanakan Penyata Gugur
Untuk pelaksanaan segera pernyataan DROP, cipta fungsi PL/pgSQL :
CREATE OR REPLACE FUNCTION f_delfunc(_name text, OUT functions_dropped int) LANGUAGE plpgsql AS $func$ 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) INTO functions_dropped, _sql; IF functions_dropped > 0 THEN EXECUTE _sql; END IF; END $func$;
Panggil fungsi dengan nama fungsi yang dikehendaki ke lepaskan fungsi padanan dan kembalikan nombor yang digugurkan:
SELECT f_delfunc('my_function_name');
Pertimbangan Tambahan
Atas ialah kandungan terperinci Bolehkah saya Menggugurkan Semua Fungsi Memadankan Nama Kad Liar dalam PostgreSQL, Tanpa mengira Parameternya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!