サイトアイコン こじりふぁ

DEFINE

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 田中