DEFINEを使うと、SQL内の特定文字列を定義した内容に置き換えてからSQLを実行することができます。
DEFINEのメリットはDEFINE定義を変更するだけでSQL自体を変更せずに済むので、保守性が向上するという点にあります。
保守性の向上は重要な点です。仕事で使用するSQLは複雑になりがちですが、SQLを修正する必要が発生した場合、もし、DEFINE定義のみで対応できれば、凡ミスが無くなり、SQL修正による試験の実施も不要なので、無駄な工数を使わなくて済みます。
DEFINEサンプル1
WHERE句の数値項目の条件をDEFINE定義で置き換える。
-- ここで特定文字列の置換定義をする DEFINE ID = 1 SELECT ID , NAME FROM TB_SAMPLE WHERE ID = &ID -- 置換を行う特定文字列は「&」+「特定文字列」の形式で指定する ; 旧 7: ID = &ID -- 置換を行う特定文字列は「&」+「特定文字列」の形式で指定する 新 7: ID = 1 -- 置換を行う特定文字列は「&」+「特定文字列」の形式で指定する ID NAME ---------- ------------ 1 田中
DEFINEサンプル2
WHERE句の文字列項目の条件をDEFINE定義で置き換える。
文字列項目はDEFINE定義でダブルクォートを使わないとうまく置換できないので注意です。
-- ここで特定文字列の置換定義をする(置換後文字列をダブルクォートで囲むこと) DEFINE NAME = "田中" SELECT ID , NAME FROM TB_SAMPLE WHERE NAME = '&NAME' -- 置換を行う特定文字列は「'」で囲み「&」+「特定文字列」の形式で指定する ; 旧 7: NAME = '&NAME' -- 置換を行う特定文字列は「'」で囲み「&」+「特定文字列」の形式で指定する 新 7: NAME = '田中' -- 置換を行う特定文字列は「'」で囲み「&」+「特定文字列」の形式で指定する ID NAME ---------- ------------ 1 田中