構文
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コマンドでその列が参照される
EXIT SQL*Plus
ストアド・クエリーまたはスクリプトを実行するたびに、SQL*Plusは、variableを参照するそれぞれの置換変数(&variableまたは&&variableの書式)を、variableの値で置換します。SQL*Plusは、ユーザーがvariableをUNDEFINEするまで、そのセッションでのvariable値の入力を求めるプロンプトを表示しません。
事前定義変数の値を複数の行に展開した場合(SQL*Plusのコマンド継続文字を使用)、SQL*Plusは各継続文字および改行を空白で置換します。たとえば、次のように入力したとします。
DEFINE TEXT = 'ONE- TWO- THREE'
SQL*Plusはこれを次のように解釈します。
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であることを示しています。
次の8つの変数がSQL*Plusのインストール中に定義されます。これらの変数とユーザー定義変数の違いは、事前定義値を持つ点のみです。
表12-3 SQL*Plusのインストール時に事前定義される変数
変数名 | 含まれる値 |
---|---|
可能な宛先への接続に使用される接続識別子。 |
|
現在の日付、またはユーザー定義の固定文字列。 |
|
インストールされたOracle Databaseの現行のバージョン。 |
|
インストールされたOracle Databaseの完全なリリース番号。 |
|
現在の接続での権限レベル。 |
|
インストールされたSQL*Plusコンポーネントの完全なリリース番号。 |
|
接続に使用されるユーザー名。 |
使用可能な宛先への接続のためにユーザーが指定する接続識別子が含まれます。
動的変数としての現在の日付、または固定文字列が含まれます。現行の日付はデフォルトで、NLS_DATE_FORMATの値を使用して書式設定されます。
_DATEは標準の置換変数として使用できるため、ユーザーはこれをTTITLEに含めることができます。_DATEが動的で、TTITLEで使用される場合は、すべての標準の変数のセマンティクスを持ちます。_DATEが値ではなくアンパサンドとともに使用される場合、TTITLEコマンドが実行される時間に設定されます。アンパサンドを接頭辞に使用しない場合は、ページごとに再度評価されます。TTITLEでの_DATE付きの詳細なレポート、または&_DATEへの複数の参照を持つ詳細なレポートでは、変数の出現ごとに異なる時間が表示されます。
TTITLEで_DATEを使用するユーザーは、ほとんどが、&_DATEのようにアンパサンドを使用します。そのため、レポートの各ページは同一のタイムスタンプを持ちます。これは、現在の日付の書式に秒のコンポーネントが含まれる場合、特に正確です。
DEFINE(引数なし)、または&_DATEを使用する間接参照では、現在の日付が指定されます。
_DATEの値はUNDEFINEDにすることも、または明示的にDEFINE _DATEを使用して固定文字列に設定することもできます。
デフォルトの動的な日付動作を再度有効にするには、次のように指定します。
DEFINE _DATE = "" (an empty string)
_DATEを使用すると、時刻の値をご使用のSQL*Plusプロンプトに含めることができます。
EDITコマンドで使用されるデフォルトのエディタを指定します。
Windowsオペレーティング・システムへのSQL*Plusのインストールの場合は、インストール時にメモ帳に設定されます。UNIXオペレーティング・システムの場合は、UNIX環境変数の値、EDITOR(存在する場合)に設定されます。存在しない場合はEdに設定されます。
デフォルトのテキスト・エディタの名前を保持するには、DEFINEコマンドを使用して_EDITORを再定義します。たとえば、EDITで使用するエディタをviとして定義するには、次のコマンドを入力します。
DEFINE _EDITOR = vi
インストールされたOracle Databaseの現行のバージョンが、次のような書式で含まれます。
Oracle Database 11g Release 11.2.0.1.0 - Production
インストールされたOracle Databaseの完全なリリース番号が、次のような書式で含まれます。
1102000100
現在の接続での権限レベルを示す値が含まれます。次のいずれかの値です。
AS SYSDBA
AS SYSOPER
空の文字列(通常のユーザー接続または接続しない場合)
AS SYSDBAおよびAS SYSOPERは、データベース管理者レベルの権限です。
関連項目: AS SYSDBAおよびAS SYSOPER権限については、『Oracle Database SQL言語リファレンス』を参照してください。 |
インストールされたSQL*Plusコンポーネントの完全なリリース番号が、次のような書式で含まれます。
1102000100
現在接続しているユーザーの名前が含まれます。
DEFINEコマンドを使用すると、これらの変数の各値を参照できます。
これらの変数は、他の置換変数と同様にアクセスおよび再定義できます。これらの変数はTTITLE、「&」置換変数、またはSQL*Plusコマンドライン・プロンプトで使用できます。
DEFINEコマンドを使用すると、他のDEFINE定義を参照する場合と同じ方法で、これらの8つの事前定義変数の定義を参照できます。また、DEFINEコマンドを使用してこれらの値を再定義したり、UNDEFINEコマンドを使用してこれらの定義を削除し、使用不可にすることもできます。
特定の変数の定義を表示するには、次のように入力します。
DEFINE variable
variableには、定義を表示する置換変数の名前を指定します。
すべての事前定義変数およびユーザー定義変数の定義を表示するには、次のように入力します。
DEFINE
すべての事前定義変数およびユーザー定義変数の定義が表示されます。
UNDEFINEコマンドを使用して、置換変数の定義を削除し、使用不可にできます。
事前定義変数の使用例
接続識別子を表示するSQL*Plusプロンプトを変更するには、次のように入力します。
SET SQLPROMPT '_CONNECT_IDENTIFIER > '
事前定義された_SQLPLUS_RELEASE置換変数の値を表示するには、次のように入力します。
DEFINE _SQLPLUS_RELEASE
DEFINE _SQLPLUS_RELEASE = "1102000100" (CHAR) |