構文
DEF[INE] [variable] | [variable = text]
ユーザー変数または事前定義変数を指定し、その変数にCHAR値を割り当てたり、1つまたはすべての変数の値および変数型を表示します。
項
variable
どのユーザー変数または事前定義変数の値を割り当てるか(あるいは表示するか)を指定します。
text
variableに割り当てるCHAR値を指定します。textに句読点または空白が含まれている場合は、テキストを一重引用符で囲みます。
variable = text
variableの値と型を表示するには、DEFINEに続けてvariableを入力します。 すべての置換変数の値と型を表示するには、句を指定せずに、DEFINEを入力します。
使用方法
事前定義変数は、次の操作を行うまでそれぞれの値を保持します。
その変数を参照する新しいDEFINEコマンドの入力
COLUMNコマンドのNEW_VALUE句またはOLD_VALUE句の中でその変数が参照され、次にSQL SELECTコマンドでその列が参照される
SQL*Plusの終了
ストアド・クエリーまたはスクリプトを実行するたびに、SQL*Plusは、variableを参照するそれぞれの置換変数(&variableまたは&&variableの書式)を、variableの値で置換します。SQL*Plusは、ユーザーがvariableをUNDEFINEするまで、そのセッションでのvariable値の入力を求めるプロンプトを表示しません。
事前定義変数の値を複数の行に展開した場合(SQL*Plusのコマンド継続文字を使用)、SQL*Plusは各継続文字および改行を空白で置換します。たとえば、次に対するSQL*Plusの解釈は
DEFINE TEXT = 'ONE- TWO- THREE'
次のとおりです
DEFINE TEXT = 'ONE TWO THREE'
予期しない結果を回避するために、変数に渡される値と同じ名前が付いている変数の定義を使用しないでください。定義した変数に指定した値が変数名と一致する場合、指定された値のかわりに、一致する変数の内容が使用されます。
SQL*Plus起動時に事前定義される変数があります。DEFINEと入力すると、それらの定義が表示されます。
例
値MANAGERを変数POSに割り当てるには、次のように入力します。
DEFINE POS = MANAGER
&POSへの参照を含むコマンドを実行すると、SQL*Plusは、&POSを値MANAGERで置換し、POS値の入力を求めるプロンプトは表示しません。
CHAR値20を変数DEPARTMENT_IDに割り当てるには、次のように入力します。
DEFINE DEPARTMENT_ID = 20
20という数値を入力しても、SQL*Plusは、2および0という2つの文字で構成されるCHAR値をDEPARTMENT_IDに割り当てます。
DEPARTMENT_IDの定義を表示するには、次のように入力します。
DEFINE DEPARTMENT_ID
DEFINE DEPARTMENT_ID = "20" (CHAR)
この結果は、DEPARTMENT_IDの値が20であることを示しています。