ホームページ >データベース >mysql チュートリアル >パラメータを知らずに PostgreSQL 関数を安全に削除するにはどうすればよいですか?
Postgres では、既存の関数にパラメーターを追加または削除するときに、テキスト ファイルに保存された関数の管理が困難になることがあります。この問題に対処するために、パラメータの数や種類に関係なく、特定の名前を持つすべての関数を削除するワイルドカード メソッドが存在します。
次のクエリを実行して、次のクエリの DDL ステートメントを生成します。特定の名前を持つすべての関数を削除します:
SELECT 'DROP FUNCTION ' || oid::regprocedure FROM pg_proc WHERE proname = 'my_function_name' AND pg_function_is_visible(oid);
「my_function_name」を実際の関数名に置き換えます (大文字と小文字は区別されます)。二重引用符)。このクエリは、関数のすべてのオーバーロードに対する正しいパラメータ タイプを持つ DROP FUNCTION ステートメントのリストを返します。
ドロップ ステートメントを即時に実行するには、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$;
という名前の関数をすべて削除するには'my_function_name':
SELECT f_delfunc('my_function_name');
関数はドロップされた関数の数を返します。
以上がパラメータを知らずに PostgreSQL 関数を安全に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。