データベース プログラミングでは、可変数の入力パラメータを持つ関数を使用すると、列数が異なるテーブルを操作するときに柔軟性が得られます。またはオプションのデータが利用可能な場合。このような関数を実装するにはさまざまなアプローチがありますが、単一の関数か複数の関数の選択は、効率や特定の要件などの要因によって異なります。
目的ごとに個別の関数を使用する
1 つのアプローチは、シナリオごとに個別の関数を作成し、特定の列の更新を処理することです。この方法により、明確かつ簡潔なロジックが確保され、将来の関数の保守と変更が容易になります。
モード パラメーターを使用した単一関数の使用
または、モード パラメーターを利用して更新する列を制御する単一関数を選択することもできます。このアプローチにより、汎用性が高まり、単一の関数内でさまざまなシナリオを処理できるようになります。 PL/pgSQL を使用した PostgreSQL での実装例を次に示します。
CREATE OR REPLACE FUNCTION update_site( mode integer, name character varying, city character varying, telephone integer, ) RETURNS integer AS $$ BEGIN IF mode = 0 THEN BEGIN UPDATE "Sites" SET ("City","Telephone") = (city,telephone) WHERE "SiteName" = name; RETURN 1; EXCEPTION WHEN others THEN RAISE NOTICE 'Error on site update: %, %',SQLERRM,SQLSTATE; RETURN 0; END; ELSIF mode = 1 THEN BEGIN UPDATE "Sites" SET "City" = city WHERE "SiteName" = name; RETURN 1; EXCEPTION WHEN others THEN RAISE NOTICE 'Error on site update: %, %',SQLERRM,SQLSTATE; RETURN 0; END; ELSIF mode = 2 THEN BEGIN UPDATE "Sites" SET "Telephone" = telephone WHERE "SiteName" = name; RETURN 1; EXCEPTION WHEN others THEN RAISE NOTICE 'Error on site update: %, %',SQLERRM,SQLSTATE; RETURN 0; END; ELSE RAISE NOTICE 'Error on site update: %, %',SQLERRM,SQLSTATE; RETURN 0; END IF; END; $$ LANGUAGE plpgsql;
効率に関する考慮事項
効率に関しては、オプションのパラメータにデフォルト値を使用するのが一般的です。良いアプローチ。入力に常に存在するとは限らない列にデフォルト値を指定することで、関数をエラーなく実行し、必要な列を更新できることを保証できます。この方法は冗長性が低く、モード パラメータを使用するよりも効率的である可能性があります。
適切なアプローチの選択
最適なアプローチは、特定の要件によって異なります。幅広い更新シナリオを処理する必要があり、柔軟性が最も重要な場合は、モード パラメーターを指定した単一関数を使用するのが適している可能性があります。ただし、より単純で効率的な実装を希望する場合は、目的ごとに個別の関数を使用することをお勧めします。決定を下す際には、コードの可読性、保守性、パフォーマンスなどの要素を考慮してください。
以上がデータベース関数の可変入力パラメータ: 単一関数と複数関数?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。