| SQL*Plus ユーザーズ・ガイドおよびリファレンス 10g リリース2(10.2) B19277-01 |
|
この章では、SQL*Plusコマンドをアルファベット順に説明します。それぞれのコマンドについて、次の内容を説明します。
| 項目 | 説明 |
|---|---|
|
構文 |
コマンドの入力方法を示します。また、コマンドの基本的な使用方法を簡単に説明します。 |
|
項 |
構文の中に含まれるそれぞれの項または句の働きについて説明します。 |
|
使用方法 |
コマンドの使用方法およびコマンドの働きに関する追加情報を示します。 |
|
例 |
コマンドの例を示します。 |
長いSQL*Plusコマンドは、行末にハイフン(-)を付けて[Return]を押すと、次の行に続けて入力できます。必要な場合は、ハイフンの前に空白も入力できます。右山カッコ(>)が次の行のプロンプトとして表示されます。
SQL*Plusコマンドは、必ずしもセミコロンで終了する必要はありません。コマンドの入力が終了したら、[Return]を押します。SQL*Plusコマンドの末尾にセミコロンを入力してもかまいません。
| コマンド | 説明 |
|---|---|
|
指定したスクリプトのSQL*Plus文を実行します。スクリプトは、ローカル・ファイル・システムまたはWebサーバーからコールされます。 |
|
|
スクリプトを実行します。このコマンドは、@(アットマーク)コマンドと同じです。スクリプトをコールしているパスと同じパス内を検索する追加機能があるため、ネストしたスクリプトの実行に便利です。 |
|
|
SQLコマンドまたはPL/SQLブロックを実行します。 |
|
|
1行の入力を読み取り、所定の置換変数に格納します。 |
|
|
指定したテキストをバッファ内のカレント行の終わりに追加します。 |
|
|
オンラインREDOログ・ファイルの自動アーカイブの開始または終了、指定したREDOログ・ファイルの手動による(明示的な)アーカイブ、あるいはREDOログ・ファイルの情報の表示を行います。 |
|
|
オブジェクト型列の特定の属性の表示特性を指定し、1つまたはすべての属性の現行の表示特性を表示します。 |
|
|
レポート内で書式設定を変更する場合の場所と方法を指定したり、現行のブレーク定義を表示します。 |
|
|
各レポート・ページの下部に、指定したタイトルを配置して書式設定したり、現行のBTITLE定義を表示します。 |
|
|
バッファ内のカレント行のテキストを変更します。 |
|
|
指定したオプション(たとえば、BREAKSやCOLUMNSなど)の現行の値または設定を、リセットまたは消去します。 |
|
|
特定の列の表示特性を指定したり、1つまたはすべての列の現行の表示特性を表示します。 |
|
|
選択した行のサブセットについて、各種の標準計算方法を使用してサマリー行を計算して出力したり、すべてのCOMPUTE定義を表示します。 |
|
|
指定したユーザーでOracleデータベースに接続します。 |
|
|
問合せから、同じまたは別のデータベース内の表に結果をコピーします。 |
|
|
置換変数を指定して、その変数にCHAR値を割り当てたり、1つまたはすべての変数の値および変数型を表示します。 |
|
|
*DEL |
バッファの1つ以上の行を削除します。 |
|
指定した表、ビューまたはシノニムの列定義を表示したり、指定したファンクションまたはプロシージャの仕様を表示します。 |
|
|
データベースに対する保留中の変更をコミットし、現行のユーザーをOracleデータベースからログオフします。ただし、SQL*Plusは終了しません。 |
|
|
*EDIT |
指定したファイルの内容またはバッファの内容を対象として、オペレーティング・システムのテキスト・エディタを起動します。 |
|
1つのPL/SQL文を実行します。 |
|
|
SQL*Plusを終了し、オペレーティング・システムに制御を戻します。 |
|
|
*GET |
オペレーティング・システム・ファイルをバッファにロードします。 |
|
SQL*Plusコマンドラインのヘルプにアクセスします。 |
|
|
*HOST |
SQL*Plusを終了せずに、オペレーティング・システム・コマンドを実行します。 |
|
バッファ内のカレント行の後に、1つ以上の新しい行を追加します。 |
|
|
バッファ内の1つ以上の行を表示します。 |
|
|
パスワードを入力デバイスにエコー表示せずに変更できるようにします。 |
|
|
指定したテキストを表示し、その後ユーザーが[Return]を押すまで待機します。 |
|
|
バインド変数の現行の値を表示します。 |
|
|
指定したメッセージをユーザーの画面に送信します。 |
|
|
SQL*Plusを終了し、オペレーティング・システムに制御を戻します。EXITと同じ機能です。 |
|
|
1つ以上の表領域、1つ以上のデータ・ファイル、またはデータベース全体に対してメディア・リカバリを実行します。 |
|
|
スクリプト内でコメントを開始します。 |
|
|
各レポートの下部に、指定したレポート・フッターを配置して書式設定したり、現行のREPFOOTER定義を表示します。 |
|
|
各レポートの上部に、指定したレポート・ヘッダーを配置して書式設定したり、現行のREPHEADER定義を表示します。 |
|
|
現在、バッファに格納されているSQLコマンドまたはPL/SQLブロックを表示し、実行します。 |
|
|
*SAVE |
バッファの内容を、オペレーティング・システム・ファイル(スクリプト)に保存します。 |
|
現行のセッションに対するSQL*Plus環境を変更するシステム変数を設定します。 |
|
|
SQL*Plusシステム変数の値または現行のSQL*Plus環境を表示します。 |
|
|
現在実行中のOracleデータベース・インスタンスを停止します。 |
|
|
問合せの結果を、オペレーティング・システム・ファイルに格納し、必要に応じてそのファイルをプリンタに送信します。 |
|
|
指定したスクリプトのSQL*Plus文を実行します。スクリプトは、iSQL*PlusではWebサーバーから、SQL*Plusコマンドラインでは、ローカル・ファイル・システムまたはWebサーバーからコールされます。 |
|
|
Oracleデータベース・インスタンスを起動し、データベースをマウントおよびオープンします。 |
|
|
現行のSQL*Plus環境の属性を、オペレーティング・システムのスクリプトに保存します。 |
|
|
経過時間に関するタイミング・データの記録、現行のタイマーのタイトルとタイミング・データの表示、またはアクティブなタイマー数の表示を行います。 |
|
|
各レポート・ページの上部に、指定したタイトルを配置して書式設定したり、現行のTTITLE定義を表示します。 |
|
|
明示的に(DEFINEコマンドを使用して)定義したか、または暗黙的に(STARTコマンドでの引数を使用して)定義した1つ以上の置換変数を削除します。 |
|
|
PL/SQLで参照できるバインド変数を宣言します。 |
|
|
オペレーティング・システム・コマンドによってエラーが発生した場合は、SQL*Plusを終了します。iSQL*Plusでオペレーティング・システム・コマンドによってエラーが発生した場合は、指定した操作を実行します。 |
|
|
SQLコマンドまたはPL/SQLブロックによってエラーが発生した場合は、SQL*Plusを終了します。iSQL*PlusでSQLコマンドまたはPL/SQLブロックによってエラーが発生した場合は、SQL*Plusを終了します。 |
|
|
XQuery 1.0文を実行します。 |
*は、iSQL*Plusではコマンドを使用できないことを示します。
@{url | file_name[.ext] } [arg...]
指定したスクリプトのSQL*Plus文を実行します。スクリプトは、ローカル・ファイル・システムまたはWebサーバーからコールされます。iSQL*Plusでは、url形式のみがサポートされています。@コマンドは、@@およびSTARTと同様の働きをします。
url
指定したWebサーバーで実行するスクリプトのURLを指定します。SQL*Plusは、HTTPおよびFTPプロトコルをサポートしますが、HTTPSはサポートしません。今回のリリースでは、http://username:password@machine_name.domain...形式のHTTP認証はサポートされていません。
file_name[.ext]
実行するスクリプトを指定します。拡張子を指定しない場合、SQL*Plusは、デフォルトのコマンド・ファイル拡張子(通常はSQL)が指定されたものとみなします。デフォルトの拡張を変更する方法については、「SET SUF[FIX] {SQL | text}」を参照してください。
@file_name.extを入力すると、SQL*Plusは、現行のデフォルト・ディレクトリで、そのファイル名および拡張子を持つファイルを検索します。現行のディレクトリで該当するファイルが見つからない場合、SQL*Plusは、そのファイルを見つけるためにシステム依存パスを検索します。オペレーティング・システムによっては、このパス検索がサポートされていない場合もあります。オペレーティング・システム固有の情報については、ご使用のオペレーティング・システムのプラットフォーム固有のOracleマニュアルを参照してください。
arg...
スクリプト内のパラメータに渡すデータ項目を指定します。1つ以上の引数を入力すると、SQL*Plusは、該当する値をスクリプトのパラメータ(&1、&2など)に代入します。最初の引数によって、出現したすべての&1が置換され、2番目の引数によって、出現したすべての&2が置換されます。
@コマンドは、引数に値を指定してパラメータを定義します。このセッションで同じスクリプトを再度実行する場合は、新しい引数を入力することも、引数を省略して現行の値を使用することもできます。パラメータの使用方法の詳細は、「iSQL*Plusの「置換変数」画面」を参照してください。
スクリプト起動時は、COLUMNコマンドなどで事前に設定されたすべての内容が有効です。スクリプトで設定が変更される場合、新しい値が有効になるのは、スクリプト終了後です。
スクリプトには、通常、対話形式で入力するコマンド(主に、SQLコマンド、SQL*PlusコマンドまたはPL/SQLブロック)であれば、どのコマンドでも組み込むことができます。
STARTコマンドが使用禁止にされる(「SQL*Plus、SQLおよびPL/SQLコマンドの使用禁止」を参照)と、同時に@コマンドも使用禁止になります。STARTコマンドの詳細は、「START」コマンドを参照してください。
SQL*Plusは、@コマンドを実行する前にSQLTERMINATOR(デフォルトではセミコロン)を削除します。コマンドにセミコロンが必要な場合、もう1つのSQLTERMINATORを追加します。詳細は、「SET SQLT[ERMINATOR] {; | c | ON | OFF}」を参照してください。
名前がPRINTRPTで拡張子がSQLであるスクリプトを実行するには、次のように入力します。
@PRINTRPT
名前がWKRPTで拡張子がQRYであるスクリプトを実行するには、次のように入力します。
@WKRPT.QRY
YEARENDという名前のスクリプトをURLで指定して実行し、値を通常どおりの方法でYEARENDで参照する変数に渡すには、次のように入力します。
@HTTP://machine_name.domain:port/YEAREND.SQL VAL1 VAL2 @FTP://machine_name.domain:port/YEAREND.SQL VAL1 VAL2
SQLレポート用に構成されたWebサーバー上で、SQL*Plusを要求して動的スクリプトを実行するには、次のように入力します。
@HTTP://machine_name.domain:port/SCRIPTSERVER?ENDOFYEAR VAL1 VAL2
@@{url | file_name[.ext] } [arg...]
スクリプトを実行します。このコマンドは、@(アットマーク)コマンドとほぼ同じです。ネストしたスクリプトを実行すると、このコマンドはコールされたスクリプトと同じパス内またはurlでネストしたスクリプトを検索します。iSQL*Plusでは、url形式のみがサポートされています。@@コマンドは、@およびSTARTと同様の働きをします。
url
指定したWebサーバーで実行するスクリプトのURLを指定します。SQL*Plusは、HTTPおよびFTPプロトコルをサポートしますが、HTTPSはサポートしません。今回のリリースでは、http://username:password@machine_name.domain...形式のHTTP認証はサポートされていません。
file_name[.ext]
実行するネストしたスクリプトを指定します。拡張子を指定しない場合、SQL*Plusは、デフォルトのコマンド・ファイル拡張子(通常はSQL)が指定されたものとみなします。デフォルトの拡張を変更する方法については、「SET SUF[FIX] {SQL | text}」を参照してください。
あるスクリプトから、@@file_name.extを入力すると、SQL*Plusは、そのスクリプトと同じディレクトリからfile_name.extを実行します。
@@file_name.extを対話形式で入力すると、SQL*Plusは、現行の作業ディレクトリ、またはこのコマンドがコールされたスクリプトと同じurlからfile_name.extを実行します。該当するファイルが見つからない場合、SQL*Plusは、そのファイルを見つけるためにシステム依存パスを検索します。オペレーティング・システムによっては、このパス検索がサポートされていない場合もあります。オペレーティング・システム固有の情報については、ご使用のオペレーティング・システムのプラットフォーム固有のOracleマニュアルを参照してください。
arg...
スクリプト内のパラメータに渡すデータ項目を指定します。1つ以上の引数を入力すると、SQL*Plusは、該当する値をスクリプトのパラメータ(&1、&2など)に代入します。最初の引数によって、出現したすべての&1が置換され、2番目の引数によって、出現したすべての&2が置換されます。
@@コマンドは、引数に値を指定してパラメータを定義します。このセッションで同じスクリプトを再度実行する場合は、新しい引数を入力することも、引数を省略して現行の値を使用することもできます。パラメータの使用方法の詳細は、「iSQL*Plusの「置換変数」画面」を参照してください。
スクリプト起動時は、COLUMNコマンドなどで事前に設定されたすべての内容が有効です。スクリプトで設定が変更される場合、新しい値が有効になるのは、スクリプト終了後です。
スクリプトには、通常、対話形式で入力するコマンド(主に、SQLコマンドまたはSQL*Plusコマンド)であれば、どのコマンドでも組み込むことができます。
STARTコマンドが使用禁止にされる(「SQL*Plus、SQLおよびPL/SQLコマンドの使用禁止」を参照)と、同時に@@コマンドも使用禁止になります。詳細は、「SPOOL」コマンドを参照してください。
SQL*Plusは、@@コマンドを実行する前にSQLTERMINATOR(デフォルトではセミコロン)を削除します。これに対処するには、SQLTERMINATORをもう1つ追加します。詳細は、「SET SQLT[ERMINATOR] {; | c | ON | OFF}」を参照してください。
PRINTRPTという次のようなスクリプトがあるとします。
SELECT DEPARTMENT_ID, CITY FROM EMP_DETAILS_VIEW WHERE SALARY>12000; @EMPRPT.SQL @@ WKRPT.SQL
PRINTRPTを起動し、@コマンドの部分になると、現行の作業ディレクトリ内でEMPRPTというスクリプトが検索され、実行されます。PRINTRPTの@@コマンドの部分では、PRINTRPTと同じパスの中でWKRPTというスクリプトが検索され、実行されます。
同じスクリプトPRINTRPTがWebサーバー上にあり、START HTTP://machine_name.domain:port/PRINTRPTで実行するとします。@コマンドの部分になると、現行の作業ディレクトリ内でEMPRPTというスクリプトが検索され、実行されます。PRINTRPTの@@コマンドの部分では、PRINTRPTと同じurl(HTTP://machine_name.domain:port/WKRPT.SQL)でWKRPTというスクリプトが検索され、実行されます。
/(スラッシュ)
最後に実行されたSQLコマンドまたはSQLバッファに格納されているPL/SQLブロックを実行します。
バッファにはコマンド履歴はなく、またSQL*Plusコマンドは記録されません。
/(スラッシュ)コマンドは、コマンド・プロンプト、複数行コマンドの行番号プロンプト、またはiSQL*Plusの作業領域の入力領域に入力することができます。
スラッシュ・コマンドは、RUNと同様の働きをしますが、コマンドを表示しません。
スラッシュ・コマンドを使用してSQLコマンドまたはPL/SQLブロックを実行しても、SQLバッファ内のコマンドにエラーがないかぎり、バッファ内のカレント行番号は変更されません。エラーがある場合、SQL*Plusは、カレント行番号をエラーがある行番号に変更します。
次のSQLスクリプトを入力したとします。
SELECT CITY, COUNTRY_NAME FROM EMP_DETAILS_VIEW WHERE SALARY=12000;
バッファ内のコマンドを再実行するには、スラッシュ(/)を入力します。
/
CITY COUNTRY_NAME |
ACC[EPT] variable [NUM[BER] | CHAR | DATE | BINARY_FLOAT | BINARY_DOUBLE] [FOR[MAT] format] [DEF[AULT] default] [PROMPT text|NOPR[OMPT]] [HIDE]
1行の入力を読み取り、所定の置換変数に格納します。
iSQL*Plusでは、置換変数に値を入力する「入力は必須です」画面が表示されます。
variable
値を格納する変数の名前を指定します。variableを指定しない場合、SQL*Plusによって変数が作成されます。
NUM[BER]
variableがNUMBERデータ型に設定されます。応答がデータ型と一致しない場合、ACCEPTはエラー・メッセージを表示し、再度プロンプトを表示します。
CHAR
variableがCHARデータ型に設定されます。CHARの最大長は240バイトです。マルチバイト・キャラクタ・セットを使用する場合は、1つのCHARのサイズが1バイトを超えることがあります。
DATE
応答が、有効なDATE書式に設定されます。応答が、有効なDATE書式でない場合、ACCEPTはエラー・メッセージを表示し、再度プロンプトを表示します。データ型はCHARです。
BINARY_FLOAT
variableがBINARY_FLOATデータ型に設定されます。BINARY_FLOATは、米国電気電子技術者協会(IEEE)の2進浮動小数点演算についてのIEEE規格(IEEE規格754-1985)に実質的に準拠する浮動小数点数です。
BINARY_DOUBLE
variableがBINARY_DOUBLEデータ型に設定されます。BINARY_DOUBLEは、米国電気電子技術者協会(IEEE)の2進浮動小数点演算についてのIEEE規格(IEEE規格754-1985)に実質的に準拠する浮動小数点数です。
FOR[MAT]
応答の入力書式を指定します。応答が指定された書式と一致しない場合、ACCEPTはエラー・メッセージを表示し、再度プロンプトを表示します。文字書式で指定した文字長よりも長い文字を入力すると、エラー・メッセージが表示され、値を再入力する必要があります。数値書式で指定した精度を超える数値を入力すると、エラー・メッセージが表示され、値を再入力する必要があります。書式要素は、A10または9.999などのテキスト定数である必要があります。書式要素の完全なリストは、「COLUMN FORMAT」を参照してください。
データ型がDATEである場合は、dd/mm/yyなどのOracleデータベースの日付書式が有効です。DATEに書式を指定しない場合は、デフォルトで現行セッションのNLS_DATE_FORMATになります。Oracleデータベースの日付書式の詳細は、『Oracle Database管理者ガイド』および『Oracle Database SQLリファレンス』を参照してください。
DEF[AULT]
応答がない場合のデフォルト値を設定します。応答が定義されている場合は、指定した書式に従っている必要があります。
PROMPT text
ユーザーが指定したvariableの値を受け入れる前に、画面にテキストを表示します。
NOPR[OMPT]
1行スキップし、プロンプトを表示せずに入力を待ちます。
ACCEPT NOPR[OMPT]は、iSQL*Plusでは適用できません。
HIDE
入力した応答が表示されません。
変数を表示または参照するには、DEFINEコマンドを使用します。詳細は、「DEFINE」コマンドを参照してください。
「Password:」というプロンプトを表示し、pswdという名前のCHAR変数に応答を入れて、表示しないようにするには、次のように入力します。
ACCEPT pswd CHAR PROMPT 'Password: ' HIDE
「Enter weekly salary:」というプロンプトを表示し、デフォルト値が000.0のsalaryという名前のNUMBER変数に応答を入れるには、次のように入力します。
ACCEPT salary NUMBER FORMAT '999.99' DEFAULT '000.0' - PROMPT 'Enter weekly salary: '
「Enter date hired:」というプロンプトを表示し、書式がdd/mm/yyyyでデフォルト値が01/01/2003であるDATE変数hiredに応答を入れるには、次のように入力します。
ACCEPT hired DATE FORMAT 'dd/mm/yyyy' DEFAULT '01/01/2003'- PROMPT 'Enter date hired: '
「Enter employee lastname:」というプロンプトを表示し、lastnameという名前のCHAR変数に応答を入れるには、次のように入力します。
ACCEPT lastname CHAR FORMAT 'A20' - PROMPT 'Enter employee lastname: '
iSQL*Plusでは使用できません。
A[PPEND] text
textは追加するテキストを示します。
指定したテキストをSQLバッファ内のカレント行の終わりに追加します。バッファにはコマンド履歴リストはなく、またSQL*Plusコマンドは記録されません。
textとその前の文字を空白で区切るには、APPENDとtextの間に空白を2つ入力します。
セミコロンで終わるテキストを追加するには、コマンドを2つのセミコロンで終了します(セミコロンが1つのみの場合、SQL*Plusはそれをオプションのコマンド終了記号と解釈します)。
バッファの最初の行に、カンマ・デリミタ、空白および列名CITYを追加するには、次のようにその行を表示してその行をカレント行にします。
1
1* SELECT DEPARTMENT_ID |
次に、APPENDを入力します。
APPEND , CITY 1
1* SELECT DEPARTMENT_ID, CITY |
この行にセミコロンを追加するには、次のように入力します。
APPEND ;;
SQL*Plusは、最初のセミコロンをこの行に追加し、2番目のセミコロンをAPPENDコマンドの終了記号として解釈します。
ARCHIVE LOG {LIST | STOP} | {START | NEXT | ALL | integer } [TO destination]
オンラインREDOログ・ファイルの自動アーカイブの開始または終了、指定したREDOログ・ファイルの手動による(明示的な)アーカイブ、あるいはREDOログ・ファイルの情報の表示を行います。
LIST
アーカイブ予定のREDOログ・ファイルの範囲、現行のログ・ファイル・グループの順序番号および現行のアーカイブ先(オプションのコマンド・テキストまたは初期化パラメータLOG_ARCHIVE_DESTで指定します)を表示するよう要求します。
ARCHIVELOGモードおよび自動アーカイブを使用すると、次のように表示されます。
ARCHIVE LOG LIST Database log mode Archive Mode Automatic archival Enabled Archive destination /vobs/oracle/dbs/arch Oldest online log sequence 221 Next log sequence to archive 222 Current log sequence 222
現行のログ・グループと次にアーカイブするログ・グループのログ順序番号は同一なので、自動アーカイブによって、現行のログ・グループまでのすべてのログ・グループがアーカイブされています。
ARCHIVELOGモードで、自動アーカイブを無効にする場合、最後の3行を次のように指定します。
Oldest online log sequence 222 Next log sequence to archive 222 Current log sequence 225
NOARCHIVELOGモードの場合は、「アーカイブする次のログ順序 %lu」の行が表示されません。
ログ順序番号は、ログ・ライターが他のREDOログ・ファイル・グループに書込みを開始するたびに増加します。ログ順序番号は、使用したログの数を示すものではありません。オンラインREDOログ・ファイルが再利用されると、毎回その内容に新しいログ順序番号が割り当てられます。
STOP
自動アーカイブを無効にします。インスタンスがARCHIVELOGモードで、すべてのREDOログ・ファイル・グループが一杯の場合、データベース処理はREDOログ・ファイルがアーカイブされるまで(たとえば、ARCHIVE LOG NEXTまたはARCHIVE LOG ALLコマンドを入力するまで)中断されます。
START
自動アーカイブを有効にします。バックグラウンド・プロセスARCHを起動し、要求に応じて自動アーカイブを実行します。ARCHが起動され、ファイル名が指定されると、そのファイル名が新しいアーカイブの標準の出力先になります。初期化パラメータLOG_ARCHIVE_STARTがTRUEに設定されている場合、インスタンス起動時にARCHが自動的に起動します。
NEXT
アーカイブされていない次のオンラインREDOログ・ファイル・グループを手動でアーカイブします。
ALL
アーカイブされていないすべてのオンラインREDOログ・ファイル・グループを、手動でアーカイブします。
integer
ログ順序番号nで、オンラインREDOログ・ファイル・グループのアーカイブを指定します。オンラインのREDOログ・ファイル・グループであれば、どれでも指定できます。ログ・ファイルがオンラインに見つからない、または順序番号が無効の場合は、エラーが発生します。このオプションは、ログ・ファイル・グループの再アーカイブに使用します。
destination
オペレーティング・システムでの出力先デバイスまたはディレクトリを指定します。アーカイブ先デバイスは、インストール時に指定します。アーカイブ先を指定する方法については、ご使用のプラットフォーム固有のOracleデータベースのマニュアルを参照してください。オペレーティング・システムの多くは、複数のログ・ファイルを同一のテープにスプールできます。
アーカイブ先がコマンドラインで指定されていない場合は、初期化パラメータLOG_ARCHIVE_DESTの指定に従います。コマンドARCHIVE LOG STARTのdestinationで指定されたデバイスまたはディレクトリは、今後すべての自動または手動アーカイブの新しい標準出力先になります。他のオプションで出力先が指定された場合は、一時的に、現行の(手動の)アーカイブのみで有効な出力先になります。その後の自動アーカイブでは、標準出力先を変更しません。アーカイブ先の指定方法については、ご使用のプラットフォーム固有のOracleデータベースのマニュアルを参照してください。
SYSOPERまたはSYSDBAでデータベースに接続している必要があります。データベース接続については、「CONNECT」コマンドを参照してください。
アーカイブ先の指定方法については、ご使用のプラットフォーム固有のOracleデータベースのマニュアルを参照してください。
アーカイバ・プロセスを起動し、LOG_ARCHIVE_DESTで指定したアーカイブ先を使用して自動アーカイブを開始するには、次のように入力します。
ARCHIVE LOG START
自動アーカイブを停止するには、次のように入力します。
ARCHIVE LOG STOP
順序番号1001を使用して、指定した出力先へアーカイブ・ログ・ファイル・グループをアーカイブするには、次のように入力します。
ARCHIVE LOG 1001 '/vobs/oracle/dbs/arch'
archは、出力先デバイス上のファイル名に接頭辞を指定します。残りのファイル名は、初期化パラメータLOG_ARCHIVE_FORMATによって、アーカイブREDOログ・ファイルのファイル名の書式を指定します。
ATTR[IBUTE] [type_name.attribute_name [option ...]]
optionは、次のいずれかの句を表します。
ALI[AS] alias
CLE[AR]
FOR[MAT] format
LIKE {type_name.attribute_name | alias}
ON | OFF
オブジェクト型列の特定の表示特性(NUMBERデータの書式など)を指定します。列および属性は、共通のネームスペースを共有するため、同じ名前は指定できません。
さらに、1つまたはすべての属性の現行の表示特性を表示します。
指定した属性についてのみ現行の表示特性を表示するには、ATTRIBUTEの後に、type_name.attribute_nameのみを入力し、他の句は省略します。現行の属性すべてについて表示特性を表示するには、句を指定せずにATTRIBUTEを入力します。
type_name.attribute_name
オブジェクト型、type_nameの特定のオブジェクトに関する属性セットのデータ項目(属性の名前)を指定します。
同じオブジェクト型のオブジェクトを選択した場合は、type_name.attribute_nameに対するATTRIBUTEコマンドは、このセッション内で参照する該当オブジェクトすべてに適用されます。
ALI[AS] alias
指定した別名がtype_name.attribute_nameに割り当てられます。これは、他のATTRIBUTEコマンドでtype_name.attribute_nameを参照するために使用できます。
CLE[AR]
attribute_nameの表示特性をリセットします。指定する書式は、変数ではなく、A10や$9.999などのテキスト定数である必要があります。
FOR[MAT] format
列の表示書式を指定します。指定する書式は、変数ではなく、A10や$9.999などのテキスト定数である必要があります。
LIKE {type_name.attribute_name | alias}
別の属性の表示特性がコピーされます。LIKEによってコピーされるのは、現行のATTRIBUTEコマンド内の他の句で定義されていない特性のみです。
ON | OFF
列の表示特性の状態を制御します。OFFを指定すると、特性の定義に影響することなく、属性の特性が非表示になります。ONを指定すると、特性が表示されます。
1つ以上の属性について、ATTRIBUTEコマンドをいくつでも入力できます。属性をOFFに切り替えるか、CLEAR COLUMNコマンドを使用しないかぎり、各属性について設定されているすべての属性特性がセッションの終わりまで有効になります。したがって、入力したATTRIBUTEコマンドによって、複数のSQL SELECTコマンドについて特定の属性の表示特性を制御できます。
同じ属性について複数のATTRIBUTEコマンドを入力すると、SQL*Plusは、それらのコマンドのすべての句をまとめて適用します。複数のATTRIBUTEコマンドで、同じ属性に対して同じ句が適用される場合は、最後に入力した句が出力に適用されます。
オブジェクト型EMPLOYEE_TYPEのLAST_NAME属性の幅を20文字に設定するには、次のように入力します。
ATTRIBUTE EMPLOYEE_TYPE.LAST_NAME FORMAT A20
オブジェクト型EMPLOYEE_TYPEのSALARY属性の書式を、100万ドルの位まで表示し、セントの単位を四捨五入し、3桁区切りにカンマを使用し、値が0(ゼロ)のときは$0.00を表示するように設定するには、次のように入力します。
ATTRIBUTE EMPLOYEE_TYPE.SALARY FORMAT $9,999,990.99
BRE[AK] [ON report_element [action [action]]] ...
report_elementの構文は、{column|expr|ROW|REPORT}です。
また、actionの構文は、[SKI[P] n|[SKI[P]] PAGE] [NODUP[LICATES]|DUP[LICATES]]です。
次に示すような、レポート内での変更位置および実行する書式設定のアクションを指定します。
「COMPUTEコマンド」を参照してください。
現行のBREAK定義を表示するには、句を指定しないでBREAKのみを入力します。
ON column [action [action]]
アクションを指定する場合は、指定した列(ブレーク列)でブレークが発生するたびにSQL*Plusがとるアクションを指定します。(columnには、表もビューも追加できません。これを行うために、SQL文の中でその列に別名を付けることができます。)ブレークとは、列または式の値の変更、行の出力またはレポートの終わりの3つのイベントのいずれかです。
アクションを省略した場合、BREAK ON columnは、columnの中の重複する値を出力せず、対応するCOMPUTEコマンドに指定された計算をSQL*Plusが実行するレポート内の位置にマークが設定されます。
ON columnは、1回以上指定できます。次の例のように、複数のON句を指定したとします。
BREAK ON DEPARTMENT_ID SKIP PAGE ON JOB_ID - SKIP 1 ON SALARY SKIP 1
最初のON句は、最も外側のブレーク(この場合はON DEPARTMENT_ID)を表し、最後のON句は、最も内側のブレーク(この場合はON SALARY)を表します。SQL*Plusは、それぞれの出力行から指定されたブレークを検索します。このとき、最も外側のブレークから始めて、最も内側のブレークに到達するまで、入力された句の順序で処理が進められます。例では、SQL*Plusは、DEPARTMENT_ID、JOB_ID、SALARYの順で値の変更を検索します。
次にSQL*Plusは、最も内側のブレークについて指定されているアクションから始めて、最も外側のブレークまで、逆の順で各アクションを実行します(この例では、ON SALARYの場合のSKIP 1から始めて、ON DEPARTMENT_IDの場合のSKIP PAGEまで進みます)。SQL*Plusは、初期検索で見つかった最初のブレークについて指定されているアクションまでの各アクションを実行します。
たとえば、ある行でJOB_IDの値が変更され、DEPARTMENT_IDおよびSALARYの値には変更がなかった場合、SQL*Plusは、2行スキップしてからその行を出力します(1行はON SALARY句のSKIP1の結果で、もう1行はON JOB_ID句のSKIP1の結果です)。
ON columnを使用するときは、必ずSQL SELECTコマンドの中でORDER BY句も使用します。通常、BREAKコマンドの中で使用する列は、ORDER BY句の中にも同じ順序で使用します(ただし、ORDER BY句で指定したすべての列をBREAKコマンドの中で指定しなくてもかまいません)。これは、レポート上の意味のない位置でのブレークの発生を回避するためです。
この項の前半で指定したBREAKコマンドが使用されている場合、次のSELECTコマンドによって、有効な結果が得られます。
SELECT DEPARTMENT_ID, JOB_ID, SALARY, LAST_NAME FROM EMP_DETAILS_VIEW WHERE SALARY > 12000 ORDER BY DEPARTMENT_ID, JOB_ID, SALARY, LAST_NAME;
DEPARTMENT_IDが同じであるすべての行がまとめて1ページに出力され、そのページの中では、JOB_IDが同じであるすべての行が1グループにまとめられます。それぞれの職種(JOB)グループの中では、SALARYが同じである職種がグループにまとめられます。このBREAKコマンドにはLAST_NAMEは指定されていないので、LAST_NAME内にブレークがあってもアクションは実行されません。
BREAKコマンドでは、NULL同士は等しいとみなされますが、その他の値とは等しくありません。これは、WHERE句でのNULLの扱いとは異なります。
ON expr [action [action]]
アクションを挿入する場合は、式の値が変更されたときにSQL*Plusがとるアクションを指定します。
アクションを省略した場合、BREAK ON exprは、exprの中で重複する値を出力せず、対応するCOMPUTEコマンドに指定された計算をSQL*Plusが実行する位置にマークを設定します。
1つ以上の表列を含む式、あるいはSQL SELECTまたはSQL*Plus COLUMNコマンドでレポート列に割り当てられている別名を含む式を使用できます。BREAKコマンドの中で式を使用する場合は、SELECTコマンドの中での順序と同じ順序でexprを入力する必要があります。たとえば、SELECTコマンドの中の式がa+bである場合、COLUMNコマンドの中でSELECTコマンドの中の式を参照するときに、b+aまたは(a+b)はいずれも使用できません。
ON columnに指定した情報は、ON exprにも適用できます。
ON ROW [action [action]]
アクションを挿入する場合は、SQL SELECTコマンドが行を戻したときにSQL*Plusがとるアクションを指定します。ROWブレークは、BREAKコマンド内のどこに指定してあっても、最も内側のブレークになります。特定の行についてBREAKを指定する場合は、必ずアクションを指定します。
ON REPORT [action]
対応するCOMPUTEコマンドに指定された計算を、SQL*Plusが実行するレポート内の位置にマークを設定します。総合計またはその他の総計値を出力するには、BREAK ON REPORTとCOMPUTEを併用します。
REPORTブレークは、BREAKコマンド内のどこに指定してあっても、最も外側のブレークになります。
SQL*Plusはレポートの終わりに1ページをスキップしないので、BREAK ON REPORT SKIP PAGEは使用できません。
SKI[P] n
ブレークが発生した行を出力する前に、n行スキップします。BREAK SKIP nは、PREFORMATにSET ONが指定されている場合を除き、SET MARKUP HTML ONモードおよびiSQL*Plusでは動作しません。
[SKI[P]] PAGE
ブレークが発生した行を出力する前に、1ページ分として定義されている行数のみスキップします。1ページの行数は、SETコマンドのPAGESIZE句を使用して設定できます。PAGESIZEは、SQL*Plusが1ページとみなす行数を変更するのみです。したがって、NEWPAGE 0も同時に指定しない場合、SKIP PAGEによって必ずしも物理的なページ・ブレークが行われません。
NODUP[LICATES]
あるブレーク列の値が前の行の列値と同じ場合は、その値ではなく空白が出力されます。
DUP[LICATES]
選択した各行のブレーク列の値が出力されます。
現行のブレーク定義を表示するには、句を指定せずに、BREAKを入力します。
新しいBREAKコマンドを入力すると、前のBREAKコマンドは無効になります。
BREAKコマンドを取り消すには、CLEAR BREAKSを使用します。
職種の重複値、SALARYの平均および追加でSALARYの合計を出力するレポートを作成するには、次のコマンドを入力します。(この例では、部門50および80から、SH_CLERKおよびSA_MANの職種のみが選択されます)。
BREAK ON DEPARTMENT_ID ON JOB_ID DUPLICATES COMPUTE SUM OF SALARY ON DEPARTMENT_ID COMPUTE AVG OF SALARY ON JOB_ID SELECT DEPARTMENT_ID, JOB_ID, LAST_NAME, SALARY FROM EMP_DETAILS_VIEW WHERE JOB_ID IN ('SH_CLERK', 'SA_MAN') AND DEPARTMENT_ID IN (50, 80) ORDER BY DEPARTMENT_ID, JOB_ID;
BTI[TLE] [printspec [text | variable] ...] | [ON | OFF]
printspecには、テキストの配置および書式設定に使用される次の句のうちの1つ以上を指定します。
BOLD
CE[NTER]
COL n
FORMAT text
LE[FT]
R[IGHT]
S[KIP] [n]
TAB n
各レポート・ページの下部に、指定したタイトルを配置して書式設定したり、現行のBTITLE定義を表示します。
現行のBTITLE定義を表示するには、句を指定せずに、BTITLEを入力します。旧形式のBTITLEの詳細は、「BTI[TLE] text(旧形式は廃止)」を参照してください。
BTITLEコマンド構文の項および句については、「TTITLE」コマンドを参照してください。
textの前にprintspec句を入力しない場合は左揃えになります。コマンド名の直後に有効なprintspec句(LEFT、SKIP、COLなど)が続いている場合、SQL*Plusは新形式でBTITLEを解釈します。
SQL*Plusの置換文字列(& variables)は、BTITLEの実行前に展開されます。生成された文字列はBTITLEテキストとして格納されます。後続の各結果ページの生成中に予期しない結果が発生して、展開された変数の値自身が変数として解釈される場合があります。
BTITLEコマンドでのこの二重置換を回避するには、各結果ページで置換される変数に&接頭辞を使用しないでください。置換変数を使用してBTITLEに未変更のテキストを挿入する場合は、1回のみ置換されるようにテキストを引用符で囲みます。
左側にはCORPORATE PLANNING DEPARTMENTという下部タイトル、右側には日付が示されるように設定するには、次のように入力します。
BTITLE LEFT 'CORPORATE PLANNING DEPARTMENT' - RIGHT '1 JAN 2001'
50桁目からCONFIDENTIALという下部タイトルが表示され、その後に6つの空白を置いて日付が続くように設定するには、次のように入力します。
BTITLE COL 50 'CONFIDENTIAL' TAB 6 '1 JAN 2001'
iSQL*Plusでは使用できません。
C[HANGE] sepchar old [sepchar [new [sepchar]]]
バッファ内のカレント行で最初に一致した文字列を変更します。バッファにはコマンド履歴リストはなく、またSQL*Plusコマンドは記録されません。
sepchar
「/」や「!」など英数字以外の文字を指定します。sepcharには、oldまたはnewに使用されていない文字を使用します。
old
変更するテキストを指定します。CHANGEでは、oldを検索する際に大文字と小文字の区別は無視されます。たとえば、次のように入力したとします。
CHANGE /aq/aw
「aq」、「AQ」、「aQ」、「Aq」と最初に一致した文字列が検索され、それが「aw」に変更されます。SQL*Plusは、newテキストをユーザーが指定したとおりに挿入します。
oldの前に「...」を付けた場合、それはoldと最初に一致した文字列に達するまでのすべてのもの(最初に一致した文字列を含む)を意味します。oldの後に「...」を付けた場合は、old と最初に一致した文字列とそこから行末までのすべてのものを意味します。途中に「...」を含めた場合は、old より前の部分からoldから後の部分までのすべてのものが該当します。
new
oldと置換するテキストを指定します。newと、オプションの2番目および3番目のsepcharsを省略した場合、CHANGEは、バッファのカレント行からoldを削除します。
CHANGEは、バッファのカレント行の上で、指定された既存の最初に一致した文字列を、指定された新しいテキストに変更します。LIST出力では、カレント行にはアスタリスク(*)によってマークが設定されています。
CHANGEを使用して、Oracleデータベース・エラーの原因となったバッファ内の行を変更することもできます。SQL*Plusは、エラーがある行をバッファのカレント行に設定するので、それを変更できます。
1つの行全体を入力しなおすには、行番号を入力し、続いてその行の新しい内容を入力します。バッファ内の行数より大きい行番号を指定し、その後にテキストを続けた場合、SQL*Plusは、バッファの終わりに新しい行を追加して、そこにそのテキストを入れます。行番号として0(ゼロ)を指定し、その後にテキストを入力した場合、SQL*Plusは、バッファの先頭にその行を挿入します(その行が行1になります)。
3を入力し、バッファのカレント行に次のテキストが含まれていることを確認します。
3
3* WHERE JOB_ID IS IN ('CLERK', 'SA_MAN') |
次のコマンドを入力します。
CHANGE /CLERK/SH_CLERK/
バッファ内のテキストは、次のように変更されます。
3* WHERE JOB_ID IS IN ('SH_CLERK', 'SA_MAN') |
または、次のコマンドを入力します。
CHANGE /'CLERK',... /'SH_CLERK'/
元の行は、次のように変更されます。
3* WHERE JOB_ID IS IN ('SH_CLERK') |
または、次のコマンドを入力します。
CHANGE /(...)/('SA_MAN')/
元の行は、次のように変更されます。
3* WHERE JOB_ID IS IN ('SA_MAN') |
行番号を使用して、行全体の内容を置換できます。たとえば、次のように入力したとします。
3 WHERE JOB_ID IS IN ('SH_CLERK')
バッファの3番目の行が次のように置換されます。
WHERE JOB_ID IS IN ('SH_CLERK')
行番号に続けて文字列を入力すると、その行番号の後にどのようなテキストがあってもすべて置換されます。たとえば、次のように入力したとします。
2 CHANGE/OLD/NEW/
バッファの2番目の行が次のように変更されます。
2* C/OLD/NEW/ |
CL[EAR] option ...
optionは、次のいずれかの句を表します。
BRE[AKS]
BUFF[ER]
COL[UMNS]
COMP[UTES]
SCR[EEN]
SQL
TIMI[NG]
指定したオプションの現行の値または設定をリセットまたは消去します。
iSQL*Plusでは使用できません。
BRE[AKS]
BREAKコマンドで設定したブレーク定義が取り消されます。
BUFF[ER]
バッファからテキストが消去されます。複数のバッファを使用している場合以外は、CLEAR BUFFERの働きはCLEAR SQLと同じです。
このコマンドの廃止された形式の詳細は、「SET BUF[FER] {buffer|SQL}(廃止)」を参照してください。
COL[UMNS]
すべての列について、COLUMNコマンドによって設定した列表示属性がデフォルト設定にリセットされます。1つの列のみについて表示属性をリセットするには、COLUMNコマンドのCLEAR句を使用します。CLEAR COLUMNSでは、該当する列のATTRIBUTEも消去されます。
COMP[UTES]
COMPUTEコマンドで設定したすべてのCOMPUTE定義が取り消されます。
SCR[EEN]
画面が消去されます。
iSQL*Plusでは使用できません。
SQL
SQLバッファからテキストが消去されます。複数のバッファを使用している場合以外は、CLEAR SQLの働きはCLEAR BUFFERと同じです。
このコマンドの廃止された形式の詳細は、「SET BUF[FER] {buffer|SQL}(廃止)」を参照してください。
TIMI[NG]
TIMINGコマンドにより作成されたすべてのタイマーが削除されます。
ブレークを消去するには、次のように入力します。
CLEAR BREAKS
列定義を消去するには、次のように入力します。
CLEAR COLUMNS
COL[UMN] [{column | expr} [option ...]]
optionは、次のいずれかの句を表します。
ALI[AS] alias
CLE[AR]
ENTMAP {ON | OFF}
FOLD_A[FTER]
FOLD_B[EFORE]
FOR[MAT] format
HEA[DING] text
JUS[TIFY] {L[EFT] | C[ENTER] | R[IGHT]}
LIKE {expr | alias}
NEWL[INE]
NEW_V[ALUE] variable
NOPRI[NT] | PRI[NT]
NUL[L] text
OLD_V[ALUE] variable
ON | OFF
WRA[PPED] | WOR[D_WRAPPED] | TRU[NCATED]
特定の列について次のような表示属性を指定します。
さらに、1つまたはすべての列の現行の表示属性を表示します。
指定した列または式についてのみ現行の表示属性を表示するには、columnまたはexprのみを指定してCOLUMNを入力します(その他の句は使用しません)。現行のすべての列表示属性を表示するには、句を指定せずに、COLUMNを入力します。
{column | expr}
COLUMUNコマンドで、SQL SELECT文の中のどのデータ項目を参照するかを指示します(通常は列の名前)。COLUMNコマンドの中で式を使用する場合は、SELECT文の中での順序と同じ順序でexprを入力する必要があります。たとえば、SELECT文の中の式がa+bである場合、COLUMNコマンドの中でSELECT文の中の式を参照するときに、b+aまたは(a+b)はいずれも使用できません。
異なる表から同じ名前の列を選択してある場合は、その列名を指定したCOLUMNコマンドは両方の列に適用されます。LAST_NAME列を対象とするCOLUMNコマンドは、このセッションで参照するLAST_NAMEという名前のすべての列に適用されます。COLUMNは、SELECTコマンドの表名接頭辞を無視します。また、名前が二重引用符で囲まれている場合を除き、空白も無視されます。
列を別々に書式設定するには、SELECTコマンド自体の中で各列にそれぞれ一意の別名を割り当て(COLUMNコマンドのALIAS句は使用しないでください)、各列の別名を指定してCOLUMNコマンドを入力します。
ALI[AS] alias
指定した別名が列に割り当てられます。この別名は、BREAKおよびCOMPUTE、他のCOLUMNコマンドの中でその列を参照するために使用できます。
CLE[AR]
列の表示属性がデフォルト値にリセットされます。
すべての列の属性をリセットするには、CLEAR COLUMNSコマンドを使用します。CLEAR COLUMNSでは、該当する列のATTRIBUTEも消去されます。
ENTMAP {ON | OFF}
HTML出力で選択された列に対して、エンティティのマッピングのONまたはOFFを指定します。この機能を使用すると、たとえば、同じレポートの別の列にエンティティをマッピングしていても、データの列にHTMLのハイパーリンクを含むことができます。HTMLのハイパーリンクを含む列に対してエンティティのマッピングをOFFにすると、HTMLのアンカー・タグのデリミタ、「<」、「>」、「"」および「&」が、レポートで正しく解釈されます。ONにすると、それぞれのエンティティである「<」、「>」、「"」および「&」に置き換えられ、WebブラウザでHTMLが正しく解釈されません。
列ヘッダーおよびCOMPUTEラベルのエンティティ、または列に表示される出力は、列のENTMAPの値によってマップされるかが決まります。
COLUMN ENTMAPのデフォルト設定は、MARKUP HTML ENTMAPオプションの現行の設定です。
MARKUP HTML ENTMAPオプションの詳細は、「MARKUPオプション」を参照してください。
FOLD_A[FTER]
列ヘッダーの後および列内の各行の後に、改行が挿入されます。SQL*Plusでは、SELECTリスト内の最後の列の後には、余分な改行は挿入されません。FOLD_A[FTER]は、PREFORMATにONが設定されている場合を除き、SET MARKUP HTML ONモードおよびiSQL*Plusでは動作しません。
FOLD_B[EFORE]
列ヘッダーの前および列内の各行の前に、改行が挿入されます。SQL*Plusでは、SELECTリスト内の最初の列の前には、余分な改行は挿入されません。FOLD_A[FTER]は、PREFORMATにONが設定されている場合を除き、SET MARKUP HTML ONモードおよびiSQL*Plusでは動作しません。
FOR[MAT] format
列の表示書式を指定します。指定する書式は、A10または$9,999などのテキスト定数である必要があります。
CHAR、NCHAR、VARCHAR2(VARCHAR)およびNVARCHAR2(NCHAR VARYING)列のデフォルトの幅は、データベース内の列の幅です。SQL*Plusは、これらのデータ型を左揃えで書式設定します。値が列幅に収まらない場合、SQL*Plusは、SET WRAPの設定に応じて、文字列を折り返すか切り捨てます。
LONG列、CLOB列、NCLOB列またはXMLType列のデフォルトの幅は、SET LONGCHUNKSIZEまたはSET LONGのいずれか小さい方の値です。
SQL*Plusは、2000バイトの後のXMLType列を切り捨てるか折り返します。これを回避するには、XMLType列にCOLUMNの書式を明示的に設定する必要があります。COLUMNの書式は、1行当たり最大60000にすることができます。
データ型の幅を、FORMAT Anを使用してnに変更します。(Aはアルファベットを表します。)列ヘッダーより短い幅を指定した場合は、ヘッダーが切り捨てられます。
SQL*Plusでは、書式が設定されていないDATE列のデフォルトの幅と書式は、NLS_DATE_FORMATパラメータから導出されます。NLS_DATE_FORMATの設定は、NLS_TERRITORYパラメータによって決定されます。たとえば、アメリカ合衆国の場合、NLS_TERRITORYのデフォルト書式はDD-Mon-RR、デフォルトの幅はA9です。NLSパラメータは、データベースのパラメータ・ファイル内で設定される場合と、環境変数やそれに相当するプラットフォーム固有メカニズムで設定される場合があります。また、NLSパラメータは、ALTER SESSIONコマンドによって各セッションごとに指定することもできますDATE書式およびNLSパラメータについては、『Oracle Database SQLリファレンス』を参照してください。
SQL SELECT文の中でSQL関数TO_CHARを使用して、任意のDATE列の書式を変更できます。明示的なCOLUMN FORMATコマンドを使用して、列幅を調整することもできます。
Oracleデータベースでは、TO_CHARのようなSQL関数を使用するときに、非常に幅の広い列が自動的に使用できるようになります。デフォルトの列幅は、SQL*Plusおよびデータベースで使用されているキャラクタ・セットによって異なります。複数のキャラクタ・セットを使用している場合にスクリプトの移植性を最大限にするには、Oracleデータベースで、選択した列ごとにCOLUMN FORMATを使用することをお薦めします。
DATE列の幅をnに変更するには、FORMAT Anを指定したCOLUMNコマンドを使用します。列ヘッダーより短い幅を指定した場合は、ヘッダーが切り捨てられます。
数値列では、SET NUMFORMAT設定(SET NUMWIDTH設定より優先)よりCOLUMN FORMAT設定が優先されます。
「SET NUMF[ORMAT] format」および「SET NUM[WIDTH] {10 | n}」を参照してください。
NUMBER列の幅を変更するには、FORMATの後に、表12-1「数値書式」に示す要素の1つを指定します。
MIおよびPR書式要素が使用できるのは、数値書式モデルの最後の桁のみです。S書式要素が使用できるのは、最初または最後の桁のみです。
数値書式モデルにMI、SまたはPR書式が含まれていない場合、負の戻り値には自動的に先行負記号が含まれ、正の値には自動的に先行空白が含まれます。
1つの数値書式モデルに挿入できる小数点文字(D)またはピリオド(.)は1つのみです。ただし、桁グループ・セパレータ(G)またはカンマ(,)は、2つ以上挿入できます。数値書式モデル内で、小数点文字またはピリオドより右側に、桁グループ・セパレータまたはカンマを使用することはできません。
SQL*Plusは、NUMBERデータを右揃えで書式設定します。NUMBER列の幅は、ヘッダーの幅か、FORMATの幅に符号用の1つの空白を加えた幅のどちらか大きい方に等しくなります。明示的にCOLUMN FORMATまたはSET NUMFORMATを使用しない場合、常に、列の幅はSET NUMWIDTHの値以上になります。
SQL*Plusは、NUMBERデータを書式設定またはフィールド幅に合わせて四捨五入する場合があります。
値が列に収まらない場合、SQL*Plusは数字のかわりにシャープ記号(#)を表示します。
正の値が極端に大きく、数値の四捨五入の際に数値オーバーフローが発生する場合は、値のかわりに無限大記号(〜)が表示されます。同様に、負の値が極端に小さく、数値の四捨五入の際に数値オーバーフローが発生する場合は、値のかわりに負の無限大記号(-〜)が表示されます。
HEA[DING] text
列ヘッダーを定義します。HEADING句を使用しない場合の、デフォルトの列ヘッダーは、columnまたはexprです。textに空白または句読点文字が含まれている場合は、一重または二重引用符でそのテキストを囲む必要があります。HEADSEP文字(デフォルトでは「|」)が発生するたびに、新しい行が始まります。
たとえば、次のように入力したとします。
COLUMN LAST_NAME HEADING 'Employee |Name'
この場合は、2行の列ヘッダーが生成されます。
HEADSEP文字の変更方法については、「SET HEADS[EP] { | | c | ON | OFF}」を参照してください。
JUS[TIFY] {L[EFT] | C[ENTER] | R[IGHT]}
ヘッダーを整列させます。JUSTIFY句を使用しない場合、NUMBER列のヘッダーのデフォルトはRIGHTで、その他の列型のヘッダーのデフォルトはLEFTです。
LIKE {expr | alias}
他の列または式(他のCOLUMNコマンドですでに属性を定義してあるもの)の表示属性がコピーされます。LIKEによってコピーされるのは、現行のCOLUMNコマンド内の他の句で定義されていない属性のみです。
NEWL[INE]
列の値を表示する前に新しい行を開始します。NEWLINEは、FOLD_BEFOREと同じ働きをします。NEWL[INE]は、PREFORMATにSET ONが指定されている場合を除き、SET MARKUP HTML ONモードおよびiSQL*Plusでは動作しません。
NEW_V[ALUE] variable
列値を保持する変数を指定します。この変数は、TTITLEコマンドの中で参照できます。NEW_VALUEは、列値または日付を上部タイトルに表示するために使用します。この列は、SKIP PAGEアクションを伴うBREAKコマンドに挿入しておく必要があります。変数名にシャープ記号(#)は挿入できません。
NEW_VALUEは、ページごとに新しいマスター・レコードが使用されるマスター/ディテール・レポートに使用すると便利です。マスター/ディテール・レポートを作成するには、ORDER BY句にもこの列を挿入しておく必要があります。この項の終わりに記載されている例を参照してください。
NEW_V[ALUE]で指定された変数は、TTITLEを実行する前に展開されます。生成された文字列はTTITLEテキストとして格納されます。後続の各レポート・ページの生成中に予期しない結果が発生して、展開された変数の値自身が変数として解釈される場合があります。
TTITLEコマンドでのこの二重置換を回避するには、各レポート・ページで置換されるNEW_V[ALUE]変数に&接頭辞を使用しないでください。置換変数を使用してTTITLEに未変更のテキストを挿入する場合は、1回のみ置換されるようにテキストを引用符で囲みます。
下部タイトルに列値を表示する方法の詳細は、次のOLD_V[ALUE]変数を参照してください。タイトル内の変数の参照については、「TTITLE」コマンドを参照してください。書式設定および有効な書式モデルの詳細は、前述のFOR[MAT]書式を参照してください。
NOPRI[NT] | PRI[NT]
列(列ヘッダーおよび選択したすべての値)の印刷を制御します。NOPRINTを指定すると、列の画面表示および印刷が行われません。PRINTを指定すると、列の印刷が行われます。
NUL[L] text
SQL*Plusによって特定の列にNULL値として表示されるテキストを制御します。デフォルトは空白です。SET NULLは、すべての列のすべてのNULL値のかわりに表示されるテキストを制御します。ただし、COLUMNコマンドのNULL句に指定した列には適用されません。NULL値を選択すると、変数の型は常にCHARになるので、SET NULLテキストをその変数に格納できます。
OLD_V[ALUE] variable
列値を保持する変数を指定します。この変数は、BTITLEコマンドの中で参照できます。OLD_VALUEは、下部タイトルに列値を表示するために使用します。この列は、SKIP PAGEアクションを伴うBREAKコマンドに挿入しておく必要があります。
OLD_VALUEは、それぞれのページごとに新しいマスター・レコードが使用されるマスター/ディテール・レポートに使用すると便利です。マスター/ディテール・レポートを作成するには、ORDER BY句にもこの列を挿入しておく必要があります。
OLD_V[ALUE]で指定された変数は、BTITLEを実行する前に展開されます。生成された文字列はBTITLEテキストとして格納されます。後続の各レポート・ページの生成中に予期しない結果が発生して、展開された変数の値自身が変数として解釈される場合があります。
BTITLEコマンドでのこの二重置換を回避するには、各レポート・ページで置換されるOLD_V[ALUE]変数に&接頭辞を使用しないでください。置換変数を使用してBTITLEに未変更のテキストを挿入する場合は、1回のみ置換されるようにテキストを引用符で囲みます。
上部タイトルに列値を表示する方法の詳細は、NEW_V[ALUE]変数を参照してください。タイトル内の変数の参照については、「TTITLE」コマンドを参照してください。
ON | OFF
列の表示特性の状態を制御します。OFFを指定すると、属性の定義に影響を与えることなく列の属性が非表示にされます。ONを指定すると、属性が表示されます。
WRA[PPED] | WOR[D_WRAPPED] | TRU[NCATED]
長すぎて列に収まらないデータ型またはDATE列をSQL*Plusでどのように取り扱うかを指定します。WRAPPEDを指定すると、列の境界内で文字列が折り返され、必要に応じて新しい行が開始されます。WORD_WRAPが使用可能な場合、SQL*Plusは、組込みの改行文字を含むすべての先行空白(リターン、改行文字、タブ、空白など)をスキップして、各行を左揃えにします。行の境界上にない組込み空白はスキップされません。TRUNCATEDを指定すると、最初の表示行の終わりの文字列が切り捨てられます。
NCLOB列またはマルチバイトCLOB列をWORD_WRAPPEDオプションで書式設定することはできません。NCLOB列またはマルチバイトCLOB列をCOLUMN WORD_WRAPPEDで書式設定した場合、列データはCOLUMN WRAPPEDが適用されたかのように動作します。
入力したCOLUMNコマンドによって、複数のSQL SELECTコマンドについて特定の列の表示属性を制御できます。
1つ以上の列について、COLUMNコマンドをいくつでも入力できます。列をOFFに切り替えるか、CLEAR COLUMNコマンドを使用しないかぎり、各列について設定されているすべての列属性がセッションの終わりまで有効になります。
同じ列について複数のCOLUMNコマンドを入力すると、SQL*Plusは、それらのコマンドのすべての句をまとめて適用します。複数のCOLUMNコマンドで、同じ列に対して同じ句が適用される場合は、最後に入力した句によって出力が制御されます。
LAST_NAMEの幅を20文字にし、EMPLOYEE NAMEを列ヘッダーとして2行に表示するには、次のように入力します。
COLUMN LAST_NAME FORMAT A20 HEADING 'EMPLOYEE|NAME'
SALARY列の書式を次のように入力すると、100万ドルの位まで表示します。セントの単位で四捨五入して、3桁区切りにカンマを使用します。値が0(ゼロ)の場合は、$0.00と表示します。
COLUMN SALARY FORMAT $9,999,990.99
長い式を含む列に別名NETを割り当て、結果をドル書式で表示し、NULL値には<NULL>を表示するには、次のように入力します。
COLUMN SALARY+COMMISSION_PCT+BONUS-EXPENSES-INS-TAX ALIAS NET COLUMN NET FORMAT $9,999,999.99 NULL '<NULL>'
この例では、この列指定を2つのコマンドに分けています。最初のコマンドは別名NETを定義し、2番目のコマンドはNETを使用して書式を定義しています。
また、最初のコマンドでは、SELECT文で入力したとおり、正確に式を入力する必要があります。そうしないと、SQL*Plusは、COLUMNコマンドを適正な列に対応付けることができません。
REMARKSという名前の列の中の長い値を折り返すには、次のように入力します。
COLUMN REMARKS FORMAT A20 WRAP
CUSTOMER DATE QUANTITY REMARKS |
WRAPをWORD_WRAPで置換した場合、REMARKSは次のようになります。
CUSTOMER DATE QUANTITY REMARKS |
TRUNCATEを指定した場合、REMARKSは次のようになります。
CUSTOMER DATE QUANTITY REMARKS |
現在の日付および各職種の名前を上部タイトルに出力するには、次のように入力します。EMP_DETAILS_VIEWのかわりに、HRスキーマのEMPLOYEES表を使用します。
日付変数の作成方法の詳細は、「タイトル内に現在の日付を表示する方法」を参照してください。
2ページにわたるレポートは次のようになり、「Job Report」が現行サイズの行の中央に配置されています。
DATE列のデフォルトの書式をYYYY-MM-DDに変更するには、次のように入力します。
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD';
Session altered. |
変更内容を表示するには、次のようなSELECT文を入力します。
SELECT HIRE_DATE FROM EMPLOYEES WHERE EMPLOYEE_ID = 206;
Job Report 04/19/01 |
ALTER SESSIONコマンドの詳細は、『Oracle Database SQLリファレンス』を参照してください。
COMP[UTE] [function [LAB[EL] text] ...
OF {expr | column | alias} ...
ON {expr | column | alias | REPORT | ROW} ...]
BREAKコマンドと組み合せて使用すると、選択した行のサブセットについて、様々な標準計算方法を使用してサマリー行を計算し出力します。また、すべてのCOMPUTE定義を表示します。サマリーの作成方法の詳細は、「間隔の設定およびサマリー行によるレポートの明確化」を参照してください。
function ...
表12-2「COMPUTE関数」に示す関数の1つを指定します。複数の関数を指定する場合は、関数と関数の間を空白で区切ります。
COMPUTEコマンドの関数は、COMPUTEコマンド内の順序にかかわらず、常にAVG、COUNT、MINIMUM、MAXIMUM、NUMBER、SUM、STD、VARIANCEの順序で実行されます。
LAB[EL] text
計算値に対応して出力されるラベルを定義します。LABEL句を使用しない場合のデフォルトのtextは、省略されていないファンクション・キーワードです。空白または句読点を含む場合、textを一重引用符で囲む必要があります。ラベルは左揃えで出力され、列幅または行サイズのいずれか小さい方に合わせて切り捨てられます。ラベルの最大長は500文字です。
計算された値のラベルは、指定したブレーク列に表示されます。ラベルを非表示にするには、ブレーク列に対して、COLUMNコマンドのNOPRINTオプションを使用します。
COMPUTEコマンドの中で同じ関数を繰り返し使用すると、SQL*Plusはアラートを発行し、そのうちの最初の関数のみを使用します。
ON REPORTおよびON ROW計算では、SELECT構文のリストに指定された最初の列にラベルが示されます。SELECT文の中で最初にNOPRINT列を使用することによって、ラベルを非表示にできます。SELECT文ON REPORTまたはON ROWの最初の列の関数を計算する場合は、計算済の値が最初の列に表示され、ラベルは表示されません。ラベルを見るには、SELECT構文のリストで最初にダミー列を選択します。
OF {expr | column | alias} ...
OF句では、式または関数の参照を二重引用符で囲むことによって、SELECT文の中の式または関数の参照を指定できます。列の名前および別名に引用符は必要ありません。
ON {expr | column | alias | REPORT | ROW} ...
複数のCOMPUTEコマンドのON句で同じ列が参照されている場合は、最後のCOMPUTEコマンドのみが適用されます。
ON句でSQL SELECT式または関数の参照を指定するには、その式または関数の参照を引用符で囲みます。列の名前および別名に引用符は必要ありません。
すべてのCOMPUTE定義を表示するには、句を指定せずにCOMPUTEを入力します。
計算が実行されるためには、次の条件がすべて満たされている必要があります。
すべてのCOMPUTE定義を取り消すには、CLEAR COMPUTESコマンドを使用します。
COMPUTEが実行されている列に対してNOPRINTオプションを使用すると、COMPUTEの実行結果も非表示になります。
AC_MGR(アカウント・マネージャ)およびSA_MAN(セールスマン)の各職種別に給与の小計を計算し、TOTALという計算ラベルを付けるには、次のように入力します。
BREAK ON JOB_ID SKIP 1; COMPUTE SUM LABEL 'TOTAL' OF SALARY ON JOB_ID; SELECT JOB_ID, LAST_NAME, SALARY FROM EMP_DETAILS_VIEW WHERE JOB_ID IN ('AC_MGR', 'SA_MAN') ORDER BY JOB_ID, SALARY;
レポート上の12,000を超える給与の合計を計算するには、次のように入力します。
COMPUTE SUM OF SALARY ON REPORT BREAK ON REPORT COLUMN DUMMY HEADING '' SELECT ' ' DUMMY, SALARY, EMPLOYEE_ID FROM EMP_DETAILS_VIEW WHERE SALARY > 12000 ORDER BY SALARY;
SALARY EMPLOYEE_ID |
管理部門および経理部門の中での給与の平均と最高額を計算するには、次のように入力します。
BREAK ON DEPARTMENT_NAME SKIP 1 COMPUTE AVG LABEL 'Dept Average' - MAX LABEL 'Dept Maximum' - OF SALARY ON DEPARTMENT_NAME SELECT DEPARTMENT_NAME, LAST_NAME, SALARY FROM EMP_DETAILS_VIEW WHERE DEPARTMENT_NAME IN ('Executive', 'Accounting') ORDER BY DEPARTMENT_NAME;
部門20以下の給与を合計し、計算ラベルを出力しないようにするには、次のようにします。
COLUMN DUMMY NOPRINT COMPUTE SUM OF SALARY ON DUMMY BREAK ON DUMMY SKIP 1 SELECT DEPARTMENT_ID DUMMY, DEPARTMENT_ID, LAST_NAME, SALARY FROM EMP_DETAILS_VIEW WHERE DEPARTMENT_ID <= 20 ORDER BY DEPARTMENT_ID;
DEPARTMENT_ID LAST_NAME SALARY |
計算ラベルを出力せずに、レポートの終わりに給与合計額が表示されるようにするには、次のように入力します。
COLUMN DUMMY NOPRINT COMPUTE SUM OF SALARY ON DUMMY BREAK ON DUMMY SELECT NULL DUMMY, DEPARTMENT_ID, LAST_NAME, SALARY FROM EMP_DETAILS_VIEW WHERE DEPARTMENT_ID <= 30 ORDER BY DEPARTMENT_ID;
CONN[ECT] [{ logon | / } [AS {SYSOPER | SYSDBA}]]
CONN[ECT] [{logon | / | proxy} [AS {SYSOPER | SYSDBA}]]
logonの構文は、次のとおりです。
username[/password] [@connect_identifier]
proxyの構文は、次のとおりです。
proxy user[username] [/password] [@connect_identifier]
指定したユーザー名でOracleデータベースに接続します。CONNECTコマンドを実行すると、サイト・プロファイルglogin.sqlおよびユーザー・プロファイルlogin.sqlが実行されます。
CONNECTコマンドでは、初期接続に失敗した場合にユーザー名またはパスワードを求めるプロンプトは表示されません。
エンタープライズ・ユーザー・プロキシを使用してデータベースに接続するには、最初にプロキシを設定する必要があります。エンタープライズ・ユーザー・プロキシの設定の詳細は、『Oracle Database管理者ガイド』を参照してください。
username[/password]
Oracleデータベースへの接続に使用するユーザー名およびパスワードを指定します。usernameおよびpasswordを省略すると、SQL*Plusは入力を求めるプロンプトを表示します。usernameの入力を求めるプロンプトが表示された場合にスラッシュ(/)を入力するか、[Return]を押すか、または「実行」をクリックすると、SQL*Plusはデフォルトのログオンを使用してユーザーをログインさせます。詳細は、「/(スラッシュ)」を参照してください。
passwordのみを省略すると、passwordの入力を求めるプロンプトが表示されます。プロンプトを表示する場合、SQL*Plusが端末画面にpasswordを表示することはありません。
パスワードを変更する方法の詳細は、SQL*Plusの場合は「PASSWORD」コマンドを、iSQL*Plusの場合は「iSQL*Plusでのパスワードの変更」を参照してください。
connect_identifier
Oracle Net接続識別子を指定します。正確な構文は、Oracle Net構成によって異なります。詳細は、Oracle Netのマニュアルを参照するか、またはデータベース管理者に問い合せてください。SQL*Plusは、サービス名についてはプロンプトを表示せず、接続識別子の指定がない場合は、デフォルトのデータベースを使用します。
/ (slash)
オペレーティング・システム認証を使用するデフォルト・ログオンを表します。デフォルト・ログオンを使用する場合は、connect_identifierを指定できません。デフォルト・ログオンでは、SQL*Plusはユーザー名OPS$nameを使用してユーザーをログインさせようとします。nameは、ご使用のオペレーティング・システムのユーザー名です。オペレーティング・システム認証の詳細は、『Oracle Database管理者ガイド』を参照してください。
SQL*Plusコマンドラインでは、アプリケーションでデータベースへの接続にパスワード資格証明が使用されます。このコマンドラインでは、資格証明をクライアント・サイドのOracle Walletに格納することができます。Oracle Walletを使用するようにクライアントを構成すると、アプリケーションで、次の構文を使用してパスワード認証を使用するデータベースに接続できます。
CONNECT /@database_alias
セキュアな外部パスワード・ストアを使用するようにクライアントを構成する方法およびそのパスワード・ストア内の資格証明を管理する方法の詳細は、『Oracle Databaseセキュリティ・ガイド』を参照してください。
AS {SYSOPER | SYSDBA}
AS句を使用すると、SYSOPERまたはSYSDBAシステム権限が付与されているユーザーによる特権付き接続が可能です。また、デフォルト・ログオンである/(スラッシュ)でもこれらの特権付きの接続を使用できます。
システム権限の詳細は、『Oracle Database管理者ガイド』を参照してください。
CONNECTは、現行のトランザクションをデータベースに対してコミットし、現行のユーザー名をOracleデータベースから切断し、指定されたユーザー名で再接続します。
データベースへの接続の際にアカウントの有効期限が切れたユーザーとしてログオンまたは接続した場合は、接続の前にパスワードを変更するように求めるプロンプトが表示されます。
データベースへの接続の際にアカウントがロックされている場合は、メッセージが表示され、DBAがロックを解除するまで、そのアカウントへの(そのユーザーとしての)接続は許可されません。
アカウント管理の詳細は、『Oracle Database SQLリファレンス』の「CREATE USER」、「ALTER USER」および「CREATE PROFILE」コマンドを参照してください。
Oracle Netを介し、ユーザー名HRを使用して、FLEETDBというOracle Net別名を持つデータベースに接続するには、次のように入力します。
CONNECT HR@FLEETDB
パスワード・ファイルの設定の詳細は、『Oracle Database管理者ガイド』を参照してください。
現行ノードのインスタンスにユーザーHRの権限で接続するには、次のように入力します。
CONNECT HR AS SYSDBA
現行ノードのインスタンスにデフォルト・ユーザーの権限で接続するには、次のように入力します。
CONNECT / AS SYSDBA
最後の2つの例では、デフォルト・スキーマはSYSになります。
COPYコマンドでは、Oracle8i以上に導入されたデータ型または機能を処理するための機能拡張は行われていません。COPYコマンドは、将来のリリースでは廃止される予定です。
COPYコマンドの詳細および構文については、付録B「SQL*PlusのCOPYコマンド」を参照してください。
DEF[INE] [variable] | [variable = text]
ユーザー変数または事前定義変数を指定し、その変数にCHAR値を割り当てたり、1つまたはすべての変数の値および変数型を表示します。
variable
どのユーザー変数または事前定義変数の値を割り当てるか(あるいは表示するか)を指定します。
text
variableに割り当てるCHAR値を指定します。textに句読点または空白が含まれている場合は、テキストを一重引用符で囲みます。
variable = text
置換変数を定義(命名)し、それにCHAR値を割り当てます。
variableの値と型を表示するには、DEFINEに続けてvariableを入力します。すべての置換変数の値と型を表示するには、句を指定せずに、DEFINEを入力します。
事前定義変数は、次の操作を行うまでそれぞれの値を保持します。
ストアド・クエリーまたはスクリプトを実行するたびに、SQL*Plusは、variableを参照するそれぞれの置換変数(&variableまたは&&variableの書式)を、variableの値で置換します。SQL*Plusは、ユーザーが変数をUNDEFINEするまで、そのセッションでの変数値の入力を求めるプロンプトを表示しません。
事前定義変数の値を複数の行に展開した場合(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のインストール中に定義されます。これらの変数とユーザー定義変数の違いは、事前定義値を持つ点のみです。
使用可能な宛先への接続のためにユーザーが指定する接続識別子が含まれます。
動的変数としての現在の日付、または固定文字列が含まれます。現行の日付はデフォルトで、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データベースの現行のバージョンが、次のような書式で含まれます。
Oracle Database 10g 10.2.0.1.0 - Production
インストールされたOracleデータベースの完全なリリース番号が、次のような書式で含まれます。
102010000
現在の接続での権限レベルを示す値が含まれます。次のいずれかの値です。
AS SYSDBAおよびAS SYSOPERは、データベース管理者レベルの権限です。
インストールされたSQL*Plusコンポーネントの完全なリリース番号が、次のような書式で含まれます。
101020000
現在接続しているユーザーの名前が含まれます。
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 = "101000100" (CHAR) |
iSQL*Plusでは使用できません。
DEL [n | n m | n * | n LAST | * | * n | * LAST | LAST]
バッファの1つ以上の行を削除します。
SQL*Plusコマンドは、バッファに格納されません。以前に入力したコマンドの履歴は、バッファにありません。
| 項 | 説明 |
|---|---|
|
n |
行nが削除されます。 |
|
n m |
行n〜mが削除されます。 |
|
n * |
行nからカレント行までが削除されます。 |
|
n LAST |
行nから最終行までが削除されます。 |
|
* |
カレント行が削除されます。 |
|
* n |
カレント行から行nまでが削除されます。 |
|
* LAST |
カレント行から最終行までが削除されます。 |
|
LAST |
最終行が削除されます。 |
バッファ内のカレント行を削除するには、句を指定せずに、DELを入力します。
DELを実行すると、バッファの次の行がある場合は、その行がカレント行になります。DELを繰り返し入力することによって、複数の連続した行を削除できます。
SQLバッファに次の問合せが含まれているとします。
SELECT LAST_NAME, DEPARTMENT_ID FROM EMP_DETAILS_VIEW WHERE JOB_ID = 'SA_MAN' ORDER BY DEPARTMENT_ID;
WHERE句を含む行をカレント行にするには、次のように入力します。
LIST 3
3* WHERE JOB_ID = 'SA_MAN' |
続いて次のように入力します。
DEL
現在、SQLバッファには次の行が含まれています。
SELECT LAST_NAME, DEPARTMENT_ID FROM EMP_DETAILS_VIEW ORDER BY DEPARTMENT_ID
バッファの3番目の行を削除するには、次のように入力します。
DEL 3
現在、SQLバッファには次の行が含まれています。
SELECT LAST_NAME, DEPARTMENT_ID |
DESC[RIBE] {[schema.]object[@db_link]}
指定した表、ビューまたはシノニムの列定義を表示したり、指定したファンクションまたはプロシージャの仕様を表示します。
schema
オブジェクトが存在するスキーマを指定します。schemaを省略した場合、SQL*Plusは、コマンド実行者自身のオブジェクトとみなします。
object
定義を表示する表、ビュー、型、プロシージャ、ファンクション、パッケージまたはシノニムを指定します。
@db_link
objectが存在しているデータベースに対応するデータベース・リンク名です。異なるスキーマ内の別の表にアクセスする権限の詳細は、『Oracle Database SQLリファレンス』を参照してください。
表、ビュー、型およびシノニムの定義の表示には、次の情報が含まれます。
DESCRIBEを実行すると、VARCHAR列がVARCHAR2の型とともに戻されます。
DESCRIBEコマンドを使用すると、SET DESCRIBEコマンドで設定した深さレベルまで、オブジェクトの定義を繰り返し表示できます。1つのオブジェクトに複数のオブジェクト型が含まれている場合は、行番号および属性や列のインデントを表示することもできます。詳細は、「SET」コマンドを参照してください。
表示されるデータの幅を制御するには、SET LINESIZEを使用します。
DESCRIBEコマンドで出力される列には、通常、現在指定されている行サイズの割合が割り当てられます。SET LINESIZEコマンドを使用して行サイズを増減させると、通常、各列の割合が増減します。これによって、表示上、テキストの折返しが意図しない位置で行われる場合があります。詳細は、「SET」コマンドを参照してください。
ファンクションおよびプロシージャの定義には、次の情報が含まれます。
EMP_DETAILS_VIEWの定義を表示するには、次のように入力します。
DESCRIBE EMP_DETAILS_VIEW
CUSTOMER_LOOKUPという名前のプロシージャの定義を表示するには、次のように入力します。
DESCRIBE customer_lookup
PROCEDURE customer_lookup |
プロシージャaprocおよびbprocを含むパッケージAPACKを作成し、この定義を表示するには、次のように入力します。
CREATE PACKAGE apack AS PROCEDURE aproc(P1 CHAR, P2 NUMBER); PROCEDURE bproc(P1 CHAR, P2 NUMBER); END apack; /
Package created. |
DESCRIBE apack
STREET属性およびCITY属性を含むオブジェクト型ADDRESSを作成し、この定義を表示するには、次のように入力します。
CREATE TYPE ADDRESS AS OBJECT ( STREET VARCHAR2(20), CITY VARCHAR2(20) ); /
Type created. |
DESCRIBE address
Name Null? Type |
属性LAST_NAME、EMPADDR、JOB_IDおよびSALARYを含むオブジェクト型EMPLOYEEを作成し、この定義を表示するには、次のように入力します。
CREATE TYPE EMPLOYEE AS OBJECT (LAST_NAME VARCHAR2(30), EMPADDR ADDRESS, JOB_ID VARCHAR2(20), SALARY NUMBER(7,2) ); /
Type created. |
DESCRIBE employee
Name Null? Type |
オブジェクト型addr_typeをオブジェクト型ADDRESSの表として作成し、この定義を表示するには、次のように入力します。
CREATE TYPE addr_type IS TABLE OF ADDRESS; /
Type created. |
DESCRIBE addr_type
addr_type TABLE OF ADDRESS |
オブジェクト型addr_varrayをオブジェクト型ADDRESSのVARRAYとして作成し、この定義を表示するには、次のように入力します。
CREATE TYPE addr_varray AS VARRAY(10) OF ADDRESS; /
Type created. |
DESCRIBE addr_varray
addr_varray VARRAY(10) OF ADDRESS |
DEPARTMENT_ID、PERSONおよびLOC列を含む表departmentを作成し、この定義を表示するには、次のように入力します。
CREATE TABLE department (DEPARTMENT_ID NUMBER, PERSON EMPLOYEE, LOC NUMBER ); /
Table created. |
DESCRIBE department
Name Null? Type |
属性NUMERATOR、DENOMINATORおよびMETHOD rational_orderを含むオブジェクト型rationalを作成し、この定義を表示するには、次のように入力します。
CREATE OR REPLACE TYPE rational AS OBJECT (NUMERATOR NUMBER, DENOMINATOR NUMBER, MAP MEMBER FUNCTION rational_order - RETURN DOUBLE PRECISION, PRAGMA RESTRICT_REFERENCES (rational_order, RNDS, WNDS, RNPS, WNPS) ); / CREATE OR REPLACE TYPE BODY rational AS OBJECT MAP MEMBER FUNCTION rational_order - RETURN DOUBLE PRECISION IS BEGIN RETURN NUMERATOR/DENOMINATOR; END; END; / DESCRIBE rational
Name Null? Type |
XMLTypeの列を含む表を作成し、この定義を表示するには、次のように入力します。
CREATE TABLE PROPERTY (Price NUMBER, Description SYS.XMLTYPE);
Table created |
DESCRIBE PROPERTY;
Name Null? Type |
SETコマンドを使用しDESCRIBEの出力を書式設定するには、次のように入力します。
SET LINESIZE 80 SET DESCRIBE DEPTH 2 SET DESCRIBE INDENT ON SET DESCRIBE LINE OFF
オブジェクトの設定を表示するには、SHOWコマンドを使用して次のように入力します。
SHOW DESCRIBE
DESCRIBE DEPTH 2 LINENUM OFF INDENT ON |
DESCRIBE employee
暗号化された列col2を含む表des2_tableを作成し、定義するには、次のように入力します。
CREATE TABLE des2_table ( col1 VARCHAR2(10), col2 VARCHAR2(15) ENCRYPT, col3 CHAR(5), col4 CHAR(20));
Table created |
DESCRIBE des2_table;
Name Null? Type |
CREATE TYPEコマンドの詳細は、『Oracle Database SQLリファレンス』を参照してください。
SET DESCRIBEおよびSHOW DESCRIBEコマンドの使用方法については、「SET」コマンドおよび「SHOW」コマンドを参照してください。
DISC[ONNECT]
データベースに対する保留中の変更をコミットし、現行のユーザー名をOracleデータベースからログアウトします。ただし、SQL*Plusは終了しません。
ユーザーがOracleデータベースからログアウトしても、SQL*Plusは実行したままにしておく場合に、データベースへのユーザー・アクセスを防止するには、スクリプト内でDISCONNECTを使用します。SQL*Plusコマンドラインでは、EXITまたはQUITを使用してOracleデータベースからログアウトし、コンピュータのオペレーティング・システムに制御を戻します。iSQL*Plusでは、「ログアウト」ボタンをクリックしてOracleデータベースをログアウトします。
次に示すとおり、スクリプトをCONNECTコマンドで開始し、DISCONNECTコマンドで終了できます。
CONNECT HR SELECT LAST_NAME, DEPARTMENT_NAME FROM EMP_DETAILS_VIEW; DISCONNECT SET INSTANCE FIN2 CONNECT HR2
iSQL*Plusでは使用できません。
ED[IT] [file_name[.ext]]
file_name[.ext] には、編集するファイル(通常はスクリプト)を指定します。
指定したファイルの内容またはバッファの内容を対象として、オペレーティング・システムのテキスト・エディタを起動します。バッファにはコマンド履歴リストはなく、またSQL*Plusコマンドは記録されません。
SQLバッファの内容をオペレーティング・システムのテキスト・エディタで編集するには、filenameを指定せずにEDITを入力します。
拡張子を省略すると、SQL*Plusは、デフォルトのコマンド・ファイル拡張子(通常はSQL)が指定されたものとみなします。デフォルトの拡張子の変更については、「SET」コマンドのSUFFIX変数を参照してください。
filenameを指定すると、SQL*Plusは、そのディレクトリを見つけるためにORACLE_PATHで指定されたディレクトリを検索します。SQL*PlusがORACLE_PATHでスクリプト・ファイルを検出できない場合、またはORACLE_PATHが設定されていない場合は、現行の作業ディレクトリが検索されます。いずれのディレクトリにもファイルが見つからない場合、SQL*Plusは、指定した名前のファイルを作成します。
置換変数_EDITORには、EDITによって起動されるテキスト・エディタの名前が含まれます。_EDITORの値を変更することによって、テキスト・エディタを変更できます。置換変数の値の変更については、「DEFINE」コマンドを参照してください。_EDITORが未定義の場合、EDITは、デフォルトのオペレーティング・システム・エディタの起動を試みます。
EDITを指定すると、SQLバッファの内容を入れたAFIEDT.BUFというデフォルト名のファイルが(現行の作業ディレクトリ内に)作成され、テキスト・エディタが起動されて、そのファイルの内容が表示されます。ファイルAFIEDT.BUFがすでに存在している場合は、そのファイルが、バッファの内容で上書きされます。SET EDITFILEコマンドを使用して、デフォルトのファイル名を変更できます。EDITコマンドでデフォルトのファイル名の設定を変更する方法については、「SET」コマンドのEDITFILE変数を参照してください。
ファイル名の指定がなく、バッファが空の場合は、EDITからエラー・メッセージが戻されます。
編集セッションを終了し、SQL*Plusに戻るには、テキスト・エディタの通常の終了方法に従って編集セッションを終了します。エディタの終了時、SQL*Plusはファイルの内容をバッファにロードします。
オペレーティング・システムのテキスト・エディタを使用して、拡張子SQLが付いたファイルREPORTを編集するには、次のように入力します。
EDIT REPORT
EXEC[UTE] statement
statementにはPL/SQL文を指定します。
1つのPL/SQL文を実行します。EXECUTEコマンドは、ストアド・プロシージャを参照するPL/SQL文を実行する場合に便利です。PL/SQLの詳細は、『Oracle Database PL/SQLユーザーズ・ガイドおよびリファレンス』を参照してください。
PL/SQL文があるためにEXECUTEコマンドが1行に収まらない場合は、SQL*Plusの継続文字(ハイフン)を使用します。
コマンドおよびPL/SQL文の長さが、SET LINESIZEで定義された長さを超えないようにする必要があります。
SET FEEDBACK OFFに設定すると、メッセージ「PL/SQLプロシージャが正常に完了しました。」を出力しないようにできます。
変数:nが次のように定義されている場合
VARIABLE n NUMBER
次のEXECUTEコマンドは、バインド変数nに値を割り当てます。
EXECUTE :n := 1
PL/SQL procedure successfully completed. |
バインド変数の作成方法については、「VARIABLE」コマンドを参照してください。
{EXIT | QUIT} [SUCCESS | FAILURE | WARNING | n | variable | :BindVariable] [COMMIT | ROLLBACK]
保留中のすべての変更をコミットまたはロールバックし、OracleデータベースをログアウトしてSQL*Plusを終了し、オペレーティング・システムに制御を戻します。
iSQL*Plusの場合、保留中のすべての変更をコミットまたはロールバックし、現在のiSQL*Plusスクリプトの処理を停止して、入力領域にフォーカスを戻します。iSQL*Plusでは、リターン・コードにアクセスする方法はありません。iSQL*Plusでは、「ログアウト」ボタンをクリックしてOracleデータベースを終了します。
SET AUTOCOMMITのステータスにかかわらず、終了時またはiSQL*Plusでの処理終了時にコミットが実行されます。
{EXIT | QUIT}
どちらでも同じように使用できます(QUITはEXITのシノニムです)。
SUCCESS
正常に終了します。
FAILURE
障害を示すリターン・コードが戻され、処理が終了します。
WARNING
アラートを示すリターン・コードが戻され、処理が終了します。
COMMIT
終了する前に、保留中の変更がデータベースに保存されます。
n
リターン・コードとして指定する整数を指定します。
variable
SQL.SQLCODEのような、ユーザー定義変数またはシステム変数(バインド変数ではありません)を指定します。EXIT variableでは、variableの値がリターン・コードとして戻され、処理が終了します。
:BindVariable
VARIABLEコマンドを使用してSQL*Plusで作成され、PL/SQLまたはその他のサブプログラムの中で参照される変数を指定します。:BindVariableを使用すると、サブプログラムを終了し、SQL*Plusの画面に戻ることができます。
ROLLBACK
ROLLBACK文が実行され、終了の前に、データベースに対する保留中の変更が破棄されます。
句を指定せずにEXITを入力すると、コミットが実行され、値SUCCESSが戻され、処理が終了します。
EXITを使用すると、オペレーティング・システムのリターンコードを指定できます。そのため、SQL*Plusスクリプトをバッチ・モードで実行できます。また、予期しないイベントの発生をプログラムによって検出できます。検出の方法は、オペレーティング・システムによって異なります。
キーワードSUCCESS、WARNINGおよびFAILUREは、オペレーティング・システム依存値を表します。システムによっては、WARNINGとFAILUREの区別がない場合もあります。
オペレーティング・システムによっては、オペレーティング・システム・リターン・コードの範囲が制限されていることもあります。その場合は、プラット・フォーム間でのEXITnおよびEXIT variableの移植性が制限されます。たとえば、UNIXでは、リターン・コード用の記憶域は1バイトのみです。したがって、リターン・コードの範囲は0〜255に制限されます。
EXITオプションに構文エラーがあった場合または非数値変数を使用した場合は、SQL*Plusによって EXIT FAILURE COMMITが実行されます。
条件付きの終了については、「WHENEVER SQLERROR」コマンドおよび「WHENEVER OSERROR」コマンドを参照してください。
次の例では、まだコミットされていないすべてのトランザクションをコミットし、最後に実行されたSQLコマンドまたはPL/SQLブロックのエラー・コードを戻します。
EXIT SQL.SQLCODE
iSQL*Plusでは使用できません。iSQL*Plusの場合は、Load Scriptを使用します。
GET [FILE] file_name[.ext] [LIST | NOLIST]
オペレーティング・システム・ファイルをSQLバッファにロードします。
iSQL*Plusでは、「スクリプトのロード」ボタンをクリックして入力領域にスクリプトをロードします。
バッファにはコマンド履歴リストはなく、またSQL*Plusコマンドは記録されません。
FILE
後続の引数によって、ロードするスクリプト名を指定するキーワードです。オプションのキーワードは、通常、省略されます。
fileはコマンド・キーワードであるため、fileというスクリプトをロードする場合は、一重引用符で囲む必要があります。
file_name[.ext]
ロードするファイル(通常はスクリプト)を指定します。
LIST
ロード後、ファイルの内容が表示されます。これがデフォルトです。
NOLIST
リストが非表示になります。
ファイル拡張子を指定しない場合、SQL*Plusは、デフォルトのコマンド・ファイル拡張子(通常はSQL)が指定されたものとみなします。デフォルトの拡張を変更する方法については、「SET SUF[FIX] {SQL | text}」を参照してください。
指定するファイル名にlistまたはfileという単語が含まれている場合は、ファイル名を二重引用符で囲む必要があります。SQL*Plusは、現行の作業ディレクトリでファイルを検索します。
オペレーティング・システム・ファイルには、単一のSQL文またはPL/SQLブロックが含まれている必要があります。文は、セミコロンで終了しないでください。SQL*Plusコマンド、または複数のSQL文かPL/SQLブロックが、オペレーティング・システム・ファイルからSQLバッファにロードされた場合、RUNコマンドまたは/(スラッシュ)コマンドを使用してバッファを実行すると、エラーになります。
SAVEコマンドで作成されたファイルをロードするには、GETコマンドを使用します。詳細は、「SAVE」コマンドを参照してください。
名前がYEARENDRPTで拡張子がSQLのファイルをバッファにロードするには、次のようにします。
GET YEARENDRPT
HELP | ? [topic]
topicにはCOLUMNなどのSQL*Plusのヘルプ・トピックを指定します。
SQL*Plusコマンドラインのヘルプにアクセスします。トピックを表示するには、HELP INDEXまたは? INDEXを入力します。
iSQL*Plusでは、「ヘルプ」アイコンをクリックしてiSQL*Plusオンライン・ヘルプにアクセスします。
ヘルプ・システムに関するヘルプを表示するには、topicを指定しないでHELPまたは?を入力します。
HELPの後には、1つのトピックのみ入力できます。トピックを略称(たとえば、COLUMNをCOL)で指定できます。ただし、略称で指定したトピックのみを入力して、その略称が一意でない場合、SQL*Plusは略称に一致するすべてのトピックのヘルプを表示します。たとえば、次のように入力したとします。
HELP EX
SQL*Plusは、EXECUTEコマンドの構文に続いてEXITコマンドの構文も表示します。
ヘルプが使用不可能という旨のメッセージが表示された場合は、データベース管理者に連絡してください。
SQL*Plusコマンドのリストを表示するには、次のように入力します。
HELP INDEX
または、次のように表示されます。
? INDEX
SQL*Plusコマンドのリストを1列に表示するには、次のように入力します。
HELP TOPICS
iSQL*Plusでは使用できません。
HO[ST] [command]
commandは、オペレーティング・システム・コマンドを表します。
SQL*Plusを終了せずに、オペレーティング・システム・コマンドを実行します。
オペレーティング・システムのプロンプトを表示するには、commandを指定しないでHOSTのみを入力します。複数のオペレーティング・システムのコマンドを入力できます。SQL*Plusに戻る方法については、ご使用のオペレーティング・システムのプラットフォーム固有のOracleマニュアルを参照してください。
|
注意: HOSTコマンドを使用してSQL*Plusセッションから入力したオペレーティング・システムのコマンドは、現行のSQL*Plusセッションに影響を与えません。たとえば、オペレーティング・システムの環境変数を設定しても、影響を受けるのは引き続き起動するSQL*Plusセッションのみです。 HOSTを使用禁止にできます。HOSTを使用禁止にする方法の詳細は、「SQL*Plusセキュリティ」を参照してください。 |
一部のオペレーティング・システムでは、HOSTのかわりに$(Windows)、!(UNIX)などの文字が使用可能で、HOSTコマンドにアクセスできない場合があります。詳細は、ご使用のオペレーティング・システムのプラットフォーム固有のOracleのマニュアルを参照するか、またはDBAに問い合せてください。
一部のプラットフォームでは、オペレーティング・システムによって異なるHOSTの戻り値によって_RC置換変数が作成されます。この置換変数は移植不可能なため、スクリプトで_RC置換変数を使用しないことをお薦めします。
SQL*Plusは、HOSTコマンドを実行する前にSQLTERMINATOR(デフォルトではセミコロン)を削除します。これに対処するには、SQLTERMINATORをもう1つ追加します。詳細は、「SET SQLT[ERMINATOR] {; | c | ON | OFF}」を参照してください。
UNIXオペレーティング・システムのコマンドls *.sqlを実行するには、次のように入力します。
HOST ls *.sql
Windowsオペレーティング・システムのコマンドdir *.sqlを実行するには、次のように入力します。
HOST dir *.sql
iSQL*Plusでは使用できません。
I[NPUT] [text]
textには、追加するテキストを指定します。
バッファ内のカレント行の後に、1行以上の新規テキストを追加します。バッファにはコマンド履歴リストはなく、またSQL*Plusコマンドは記録されません。
1行を追加するには、コマンドINPUTの後にテキスト行を入力します。コマンドとテキストの間は1つの空白で区切ります。1つ以上の空白で行を始めるには、INPUTおよびテキストの最初の空白以外の文字の間に複数の空白を入力します。
複数の行を追加するには、テキストを指定しないでINPUTを入力します。INPUTは、それぞれの行に対するプロンプトを表示します。INPUTを終了するには、NULL(空の)行またはピリオドを入力します。
バッファ内の行数より大きい行番号をコマンド・プロンプトで入力して、その番号に続けてテキストを入力すると、SQL*Plusは、そのテキストをバッファの最後の新規行に追加します。その行番号に0(ゼロ)を指定して、0に続けてテキストを入力すると、SQL*Plusは、バッファの最初に行を挿入します(その行が行1になります)。
SQLバッファに次のコマンドが含まれているとします。
SELECT LAST_NAME, DEPARTMENT_ID, SALARY, COMMISSION_PCT FROM EMP_DETAILS_VIEW
問合せにORDER BY句を追加するには、次のように入力します。
LIST 2
2* FROM EMP_DETAILS_VIEW |
INPUT ORDER BY LAST_NAME
LIST 2によって、行2がカレント行になります。INPUTは、カレント行の後にORDER BY句を含む新規行を追加します。現在、SQLバッファには次の行が含まれています。
1 SELECT LAST_NAME, DEPARTMENT_ID, SALARY, COMMISSION_PCT |
2行のWHERE句を追加するには、次のように入力します。
LIST 2
2* FROM EMP_DETAILS_VIEW |
INPUT 3 WHERE JOB_ID = 'SA_MAN' 4 AND COMMISSION_PCT=.25 5
INPUTは、空白行またはピリオドが入力されるまで新規行の入力を求めるプロンプトを表示します。現在、SQLバッファには次の行が含まれています。
SELECT LAST_NAME, DEPARTMENT_ID, SALARY, COMMISSION_PCT |
L[IST] [n | n m | n * | n LAST | * | * n | * LAST | LAST]
SQLバッファの1つ以上の行を表示します。
バッファにはコマンド履歴リストはなく、またSQL*Plusコマンドは記録されません。SQL*Plusコマンドラインでは、SQLバッファのすべての行を表示するために「;」を使用することもできます。
| 項 | 説明 |
|---|---|
|
n |
行nが表示されます。 |
|
n m |
行nから行mが表示されます。 |
|
n * |
行nからカレント行までが表示されます。 |
|
n LAST |
行nから最終行までが表示されます。 |
|
* |
カレント行が表示されます。 |
|
* n |
カレント行から行nまでが表示されます。 |
|
* LAST |
カレント行から最終行までが表示されます。 |
|
LAST |
最終行が表示されます。 |
すべての行を表示するには、句を指定しないでLISTのみを入力するか、「;」を入力します。表示された最終行が新しいカレント行になります(アスタリスクが付きます)。
バッファの内容の表示するには、次のように入力します。
LIST
または、次のように入力します。
;
1 SELECT LAST_NAME, DEPARTMENT_ID, JOB_ID |
アスタリスクは、行4がカレント行であることを示しています。
2行目のみを表示するには、次のように入力します。
LIST 2
2行目は、次のように表示されます。
2* FROM EMP_DETAILS_VIEW |
カレント行(この時点では行2)から最終行までを表示するには、次のように入力します。
LIST * LAST
次のように表示されます。
2 FROM EMP_DETAILS_VIEW |
PASSW[ORD] [username]
usernameにはユーザーを指定します。ユーザー名を省略すると、usernameはデフォルトで現行のユーザーになります。
パスワードを入力デバイスにエコー表示せずに変更できるようにします。iSQL*Plusでは、「パスワード」画面を使用してパスワードを変更します。
他のユーザーのパスワードを変更するには、適切な権限が付与されている必要があります。パスワードの変更方法の詳細は、「CONNECT」コマンドを参照してください。
現行のパスワードを変更するには、次のように入力します。
PASSWORD |
DBAとしてログインしていて、ユーザーjohnwの現在のパスワードjohnwpassをjohnwnewpassに変更するには、次のようにします。
PASSWORD johnw |
パスワードは、画面でエコー表示されません。ここでは、参考のためにパスワードを表示しています。
PAU[SE] [text]
textには、表示するテキストを指定します。
指定したテキストを表示し、その後ユーザーが[Return]を押すまで待ちます。
iSQL*Plusでは、続行する際にユーザーがクリックする「次のページ」ボタンが表示されます。
2行の空白行を表示するには、テキストを指定しないでPAUSEのみを入力します。
PAUSEは、常にユーザーの応答を待つので、ユーザーが確実に[Return]を押すように通知するメッセージを使用してください。
コマンド入力のソースをファイルとして指定した場合でも、PAUSEは端末から入力を読み取ります(端末が使用できる場合)。
ロールを使用禁止にする方法の詳細は、「SET PAU[SE] {ON | OFF | text}」を参照してください。
「Adjust paper and press RETURN to continue.」と出力し、ユーザーが[Return]を押すまでSQL*Plusが待つようにするには、スクリプトに次のPAUSEコマンドを含める必要があります。
SET PAUSE OFF PAUSE Adjust paper and press RETURN to continue. SELECT ...
PRI[NT] [variable ...]
variable ...には、値を表示するバインド変数の名前を指定します。
バインド変数の現行の値を表示します。バインド変数の詳細は、『Oracle Database PL/SQLユーザーズ・ガイドおよびリファレンス』を参照してください。
すべてのバインド変数を出力するには、変数を指定しないでPRINTのみを入力します。
バインド変数は、VARIABLEコマンドを使用して作成します。詳細は、「VARIABLE」コマンドおよび例を参照してください。
出力の問合せと同じように、PRINT出力の書式を制御できます。詳細は、「SQL*Plusレポートの書式設定」を参照してください。
成功したPL/SQLブロックで参照されたバインド変数、またはEXECUTEコマンドで使用されたバインド変数を自動的に表示するには、「SET」コマンドのAUTOPRINT句を使用します。詳細は、「SET」コマンドを参照してください。
次に、PRINTコマンドの例を示します。
VARIABLE n NUMBER BEGIN :n := 1; END; /
PL/SQL procedure successfully completed. |
PRINT n
N |
PRO[MPT] [text]
textには、表示するメッセージのテキストを指定します。
指定したメッセージまたは空白行を、ユーザーの画面に送信します。textを省略すると、PROMPTはユーザーの画面に空白行を表示します。
このコマンドをスクリプトで使用して、ユーザーに情報を提示することができます。
次に、ASKFORDEPT.SQLというスクリプトで、ACCEPTとともにPROMPTを使用する例を示します。ASKFORDEPT.SQLには、次のSQL*PlusコマンドおよびSQLコマンドが含まれています。
PROMPT PROMPT Please enter a valid department PROMPT For example: 10 SELECT DEPARTMENT_NAME FROM EMP_DETAILS_VIEW WHERE DEPARTMENT_ID = &NEWDEPT
STARTまたは@を使用して、このファイルを実行するとします。
@ASKFORDEPT.SQL VAL1 @HTTP://machine_name.domain:port/ASKFORDEPT.SQL VAL1
Please enter a valid department |
プロンプトDepartment ID?>が表示されたら、部門番号を入力できます。デフォルトでは、SQL*Plusは置換の前後で&NEWDEPTを含む行を表示します。また、Department ID?>のプロンプトで入力された番号に対応する部門名を表示します。SET VERIFY OFFを使用して、この動作を抑止できます。
RECOVER {general | managed | BEGIN BACKUP | END BACKUP}
general句の構文は次のとおりです。
[AUTOMATIC] [FROM location]
{ {full_database_recovery | partial_database_recovery | LOGFILE filename}
[ {TEST | ALLOW integer CORRUPTION | parallel_clause } [TEST | ALLOW integer CORRUPTION | parallel_clause ]...]
| CONTINUE [DEFAULT] | CANCEL}
full_database_recovery句の構文は次のとおりです。
[STANDBY] DATABASE
[ {UNTIL {CANCEL | TIME date | CHANGE integer} | USING BACKUP CONTROLFILE}
[UNTIL {CANCEL | TIME date | CHANGE integer} | USING BACKUP CONTROLFILE]...]
partial_database_recovery句の構文は次のとおりです。
{TABLESPACE tablespace [, tablespace]...
| DATAFILE {filename | filenumber} [, filename | filenumber]...
| STANDBY {TABLESPACE tablespace [, tablespace]...
| DATAFILE {filename | filenumber} [, filename | filenumber]...}
UNTIL [CONSISTENT WITH] CONTROLFILE }
parallel句の構文は次のとおりです。
{ NOPARALLEL | PARALLEL [ integer ] }
managed句の構文は次のとおりです。
MANAGED STANDBY DATABASE recover_clause | cancel_clause | finish_clause
recover_clause句の構文は次のとおりです。
{ { DISCONNECT [ FROM SESSION ] | { TIMEOUT integer | NOTIMEOUT } }
| { NODELAY | DEFAULT DELAY | DELAY integer } | NEXT integer
| { EXPIRE integer | NO EXPIRE } | parallel_clause
| USING CURRENT LOGFILE | UNTIL CHANGE integer
| THROUGH { [ THREAD integer ] SEQUENCE integer
| ALL ARCHIVELOG | { ALL | LAST | NEXT } SWITCHOVER} }
[ DISCONNECT [ FROM SESSION ] | { TIMEOUT integer | NOTIMEOUT }
| { NODELAY | DEFAULT DELAY | DELAY integer } | NEXT integer
| { EXPIRE integer | NO EXPIRE } | parallel_clause
| USING CURRENT LOGFILE | UNTIL CHANGE integer
| THROUGH { [ THREAD integer ] SEQUENCE integer
| ALL ARCHIVELOG | { ALL | LAST | NEXT } SWITCHOVER} ] ...
cancel_clauseの構文は次のとおりです。
CANCEL [IMMEDIATE] [WAIT | NOWAIT]
finish_clauseの構文は次のとおりです。
[ DISCONNECT [ FROM SESSION ] ] [ parallel_clause ]
FINISH [ SKIP [ STANDBY LOGFILE ] ] [ WAIT | NOWAIT ]
parallel_clauseの構文は次のとおりです。
{ NOPARALLEL | PARALLEL [ integer ] }
1つ以上の表領域、1つ以上のデータ・ファイル、またはデータベース全体に対してメディア・リカバリを実行します。RECOVERコマンドの詳細は、『Oracle Database管理者ガイド』を、ALTER DATABASE RECOVERコマンドの詳細は、『Oracle Database SQLリファレンス』および『Oracle Databaseバックアップおよびリカバリ基礎』を参照してください。
iSQL*PlusでRECOVERコマンドを使用するには、AUTORECOVERYをONに設定する必要があります。
ネットワークのタイムアウトが発生する可能性があるため、RECOVERのようなDBA操作を長時間実行する場合は、iSQL*Plusではなく、SQL*Plusコマンドラインを使用することをお薦めします。
AUTOMATIC
リカバリ操作を続ける必要のある次のアーカイブREDOログ・ファイルの名前を自動的に生成します。Oracleデータベースは、ターゲットのREDOログ・ファイル名を生成するために、LOG_ARCHIVE_DEST(またはLOG_ARCHIVE_DEST_ 1)パラメータおよびLOG_ARCHIVE_FORMATパラメータ(またはそのデフォルト)を使用します。そのファイルが存在する場合、REDOはそのファイルが適用されるように含めます。ファイルが存在しない場合、SQL*Plusは、提案として生成したファイル名をプロンプトに表示します。
AUTOMATICまたはLOGFILEのどちらも指定しない場合、SQL*Plusで自動的に生成したファイル名をプロンプトに表示します。生成されたファイル名を指定するか、または完全に修飾されたファイル名に置き換えます。アーカイブされたファイル名が、Oracleデータベースが生成したものと異なっていると判明している場合は、LOGFILE句を使用することによってファイル名を指定するための時間を削減できます。
FROM location
アーカイブREDOログ・ファイル・グループが読み取られた位置を指定します。locationの値は、完全に指定されたファイル位置である必要があります。このパラメータを省略すると、SQL*Plusは、アーカイブREDOログ・ファイル・グループが初期化パラメータLOG_ARCHIVE_DESTまたはLOG_ARCHIVE_DEST_1で指定された位置に存在するとみなします。ファイルをSET LOGSOURCEで設定した場合、FROMは指定できません。
full_database_recovery
データベース全体のリカバリを指定できます。
partial_database_recovery
個々の表領域およびデータ・ファイルのリカバリを指定できます。
LOGFILE
指定したREDOログ・ファイルを適用して、メディア・リカバリを続行します。対話形式のリカバリ・モード(AUTORECOVERY OFF)では、無効なログ・ファイル名を入力すると、無効なログ・ファイル名に対するエラーが表示され、新しいログ・ファイル名の入力を求めるプロンプトが表示されます。
TEST
発生する可能性がある問題を検知するために試行リカバリを指定します。REDOは正常に適用されますが、変更はディスクに書き込まれません。また、変更は試行リカバリの最後にロールバックされます。バックアップをリストアした場合は、試行リカバリでTEST句のみを使用できます。ログ・ファイルが破損している場合、リカバリ処理中に許容可能な破損ブロックの数を指定します。通常のリカバリ処理では、integerに2以上は指定できません。
ALLOW integer CORRUPTION
ログ・ファイルが破損している場合、リカバリ処理中に許容可能な破損ブロックの数を指定します。通常のリカバリ処理では、integerに2以上は指定できません。
parallel _clause
リカバリ操作中に使用するパラレル処理の並列度を指定できます。
CONTINUE
スレッドを無効にするために中断した後、複数インスタンス・リカバリを続行します。
CONTINUE DEFAULT
ログ・ファイル名を指定しない場合、Oracleデータベースが自動的に生成したREDOログ・ファイル名を使用してリカバリを続行します。これは、Oracleデータベースがファイル名の入力を求めるプロンプトを表示しないことを除いて、AUTOMATICを指定するのと同じです。
CANCEL
取消しベースのリカバリを中断します。
STANDBY DATABASE
制御ファイルおよびプライマリ・データベースからコピーしたアーカイブREDOログ・ファイルを使用して、スタンバイ・データベースをリカバリします。スタンバイ・データベースは、マウントされているがオープンされていない状態である必要があります。
DATABASE
データベース全体をリカバリします。
UNTIL CANCEL
取消ベースの不完全リカバリを指定します。アーカイブREDOログ・ファイルとして生成されたファイル名をプロンプトに表示することによって、リカバリが進められます。また、ファイル名のかわりにCANCELを指定すると、リカバリは完了します。
UNTIL TIME
時間ベースの不完全リカバリを指定します。一重引用符を使用して、次の形式で指定します。
'YYYY-MM-DD:HH24:MI:SS'
UNTIL CHANGE
変更ベースの不完全リカバリを指定します。integerは、リカバリする最後のシステム変更番号(SCN)の次の番号です。たとえば、データベースを9番のSCNのトランザクションまでリストアする場合は、UNTIL CHANGE 10と指定します。
USING BACKUP CONTROLFILE
現在の制御ファイルのかわりに使用される制御ファイルのバックアップを指定します。
TABLESPACE
特定の表領域をリカバリします。tablespaceは、現行データベースの表領域の名前です。1文で、16の表領域をリカバリできます。
DATAFILE
特定のデータ・ファイルをリカバリします。データ・ファイルのすべての番号を指定できます。
STANDBY TABLESPACE
スタンバイ・データベース内の損失または破損した表領域を、プライマリ・データベースおよび制御ファイルからコピーしたアーカイブREDOログ・ファイルを使用して再構築します。
STANDBY DATAFILE
スタンバイ・データベース内の損失または破損したデータ・ファイルを、プライマリ・データベースおよび制御ファイルからコピーしたアーカイブREDOログ・ファイルを使用して再構築します。
UNTIL CONSISTENT WITH CONTROLFILE
古いスタンバイ・データ・ファイルまたは表領域のリカバリは、現行のスタンバイ・データベースの制御ファイルを使用するように指定します。
PARALLEL [integer]
SQL*Plusは並列度を選択します。並列度とは、すべての関係するインスタンスで使用可能なCPUの数に、PARALLEL_THREADS_PER_CPU初期化パラメータの値を掛けたものです。
RECOVERY_PARALLELISM初期化パラメータは、PARALLELキーワードによって上書きされます。
integerを使用して、パラレル操作で使用するパラレル・スレッド数である並列度を指定します。各パラレル・スレッドは、1つまたは2つのパラレル実行プロセスを使用します。
NOPARALLEL
シリアル・リカバリ処理を指定します。これがデフォルトです。
MANAGED STANDBY DATABASE
継続スタンバイ・リカバリ・モードを指定します。このモードでは、スタンバイ・データベースは、スタンバイ・データベースのアーキテクチャ全体の、アクティブ・コンポーネントとみなされます。プライマリ・データベースは、REDOログ・ファイルをスタンバイ・サイトに積極的にアーカイブします。これらのアーカイブREDOログがスタンバイ・サイトにアーカイブされると、管理スタンバイ・リカバリ操作で使用可能になります。継続スタンバイ・リカバリは、メディア・リカバリに制限されています。
この句のパラメータの詳細は、『Oracle Databaseバックアップおよびリカバリ・アドバンスト・ユーザーズ・ガイド』を参照してください。
DISCONNECT
管理REDO処理(MRP)が分離バックグラウンド・プロセスとしてアーカイブREDOファイルを適用する必要があることを示します。現行のセッションは使用可能のままとなります。
TIMEOUT
継続リカバリ操作までの待機時間を分単位で指定します。リカバリ・プロセスはintegerに指定された時間(分)、要求されたアーカイブREDOログがスタンバイ・データベースへ書込み可能になるまで待機します。REDOログ・ファイルがその時間内に書込み可能にならない場合、リカバリ・プロセスは、エラー・メッセージを表示して終了します。この場合、継続スタンバイ・リカバリ・モードに戻るための文を再発行できます。
この句を指定しない場合、またはNOTIMEOUTを指定する場合は、RECOVER CANCEL句とともに文を再発行するか、インスタンスを停止するか、またはインスタンス障害が発生するまで、データベースは継続スタンバイ・リカバリ・モードのままです。
NODELAY
プライマリ・データベースのLOG_ARCHIVE_DEST_nパラメータで設定されたDELAYを無視して、スタンバイ・データベースに遅延されているアーカイブ・ログをすぐに適用します。この句を省略すると、アーカイブ・ログの適用は、パラメータの設定に従って遅延します。DELAYがパラメータで指定されていない場合、アーカイブ・ログはすぐに適用されます。
DEFAULT DELAY
LOG_ARCHIVE_DEST_n初期化パラメータで指定したデフォルトの時間(分)待機してから、アーカイブREDOログを適用します。
DELAY integer
integerに指定した時間(分)待機してから、アーカイブREDOログを適用します。
NEXT integer
指定された番号のアーカイブREDOログを、アーカイブ後できるだけ早く適用します。このパラメータは、プライマリ・データベースのLOG_ARCHIVE_DEST_nパラメータのDELAY設定、および以前のSQL*Plus RECOVERコマンドとALTER DATABASE RECOVERコマンドに指定された遅延値よりも一時的に優先されます。
EXPIRE integer
管理リカバリ操作が自動終了してから現在の時刻までの時間を分単位で指定します。
NO EXPIRE
以前指定したEXPIRE integerオプションを無効にします。
USING CURRENT LOGFILE
REDOログ・ファイルが一杯になった場合、スタンバイ・オンラインREDOログ・ファイルからREDOログ・ファイルをリカバリします。その際、スタンバイ・データベースでREDOログ・ファイルをアーカイブしておく必要はありません。
UNTIL CHANGE integer
管理リカバリを指定したシステム変更番号(SCN)まで処理します。ただし、指定した番号は含まれません。
THROUGH THREAD integer SEQUENCE integer
アーカイブ・ログのスレッド番号および順序番号に基づいて管理リカバリを終了します。対応するアーカイブ・ログが適用されると、管理リカバリは終了します。指定しない場合は、THREADのデフォルト値は1になります。
THROUGH ALL ARCHIVELOG
すべてのアーカイブ・ログがリカバリされるまで、管理スタンバイを継続します。この文を使用すると、以前の文で発行されたTHROUGH THREAD integer SEQUENCEinteger句を上書きできます。THROUGH句を省略した場合、これがデフォルト値となります。
THROUGH ALL SWITCHOVER
スイッチオーバー操作が実行される間、管理スタンバイ・リカバリを実行できるようにします。
THROUGH LAST SWITCHOVER
最終のEND-OF-REDOアーカイブ・インジケータの後、管理スタンバイ・リカバリを終了します。
THROUGH NEXT SWITCHOVER
次のEND-OF-REDOアーカイブ・インジケータのリカバリ後、管理スタンバイ・リカバリを終了します。
CANCEL (managed clause)
現在のアーカイブREDOファイルの適用後、管理スタンバイ・リカバリを終了します。リカバリ処理が終了すると、セッションに制御が戻ります。
CANCEL IMMEDIATE
現行のアーカイブREDOファイルを適用した後、または次のREDOログ・ファイルが読み取られた後(いずれか早い方の処理の後)で、管理スタンバイ・リカバリを終了します。リカバリ処理が終了すると、セッションに制御が戻ります。
CANCEL IMMEDIATE WAIT
現行のアーカイブREDOファイルを適用した後、または次のREDOログ・ファイルが読み取られた後(いずれか早い方の処理の後)で、管理スタンバイ・リカバリを終了します。管理スタンバイ・リカバリが終了すると、セッションに制御が戻ります。
CANCEL IMMEDIATEは、RECOVER MANAGED STANDBY DATABASE文を発行した同じセッションから発行できません。
CANCEL IMMEDIATE NOWAIT
現行のアーカイブREDOファイルを適用した後、または次のREDOログ・ファイルが読み取られた後(いずれか早い方の処理の後)で、管理スタンバイ・リカバリを終了します。すぐにセッションに制御が戻ります。
CANCEL NOWAIT
次のREDOログ・ファイルの読取り後に管理スタンバイ・リカバリを終了し、すぐに制御をセッションに戻します。
FINISH
スタンバイ・データベースの現行のスタンバイ・オンライン・ログ・ファイルをリカバリします。プライマリ・データベースに障害が発生した場合に、この句は有効です。この句はアーカイブ・ログに指定された遅延を無視します。そのため、ログがすぐに適用されます。
TIMEOUT、DELAY、EXPIREまたはNEXT句を指定している場合は、FINISHを発行できません。
OSDBAロールを使用可能にする必要があります。マルチスレッド・サーバーを経由して接続した場合、RECOVERコマンドを使用できません。
データベース全体(すべての表領域)でメディア・リカバリを実行するには、マウントされていてクローズ状態である必要があります。また、リカバリに必要なすべての表領域がオンラインである必要があります。
表領域でメディア・リカバリを実行するには、データベースはマウントされているか、またはオープン状態である必要があります。また、表領域はオフラインである必要があります。
データ・ファイルでメディア・リカバリを実行するには、データベースがオープンしていて破損したデータ・ファイルとオフライン(そのファイルがSYSTEM表領域の一部である場合を除く)でマウントされた状態である必要があります。
RECOVERコマンドを使用する前に、以前のバックアップから破損したデータ・ファイルのコピーをリストアしておく必要があります。バックアップが作成されたときまでさかのぼって、すべてのアーカイブされたREDOログ・ファイルおよびオンラインのREDOログ・ファイルにアクセスできることを確認してください。
リカバリ時に他のログ・ファイルが必要な場合、必要とされるファイルの名前が提案として生成されます。名前は、初期化パラメータLOG_ARCHIVE_DESTおよびLOG_ARCHIVE_FORMATで指定された値から導出されます。必要に応じて、LOG_ARCHIVE_DESTで指定した宛先に、リカバリに必要なアーカイブREDOログ・ファイルのコピーをリストアします。SET LOGSOURCEコマンドでLOGSOURCE変数を設定することによって初期化パラメータを上書きできます。
リカバリ時に、[Return]を押すことによって提案されたログ名を指定できます。ログ名のかわりにCANCELを入力することによってリカバリを取消しできます。また、プロンプトを進めないでファイルを自動選択するにはプロンプトでAUTOを入力します。
自動リカバリ(SET AUTORECOVERY ON)を使用可能にする場合は、ファイル名をプロンプトに表示させないでリカバリを進めます。状態を示すメッセージは、それぞれのログ・ファイルが適用されているときに表示されます。通常のメディア・リカバリが実行されている場合、完了した状態で戻ってきます。
データベース全体をリカバリするには、次のように入力します。
RECOVER DATABASE
指定した時間までにデータベースをリカバリするには、次のように入力します。
RECOVER DATABASE UNTIL TIME 01-JAN-2001:04:32:00
データベースから2つの表領域ts_oneおよびts_twoをリカバリするには、次のように入力します。
RECOVER TABLESPACE ts_one, ts_two
データベースからデータ・ファイルdata1.dbをリカバリするには、次のように入力します。
RECOVER DATAFILE 'data1.db'
REM[ARK]
スクリプト内でコメントを開始します。SQL*Plusは、コメントをコマンドとして解釈しません。
REMARKコマンドは、行の先頭に指定する必要があります。コメントは、その行の終わりで終了します。コメントおよびコマンドは同じ行に指定できません。
REMARK行の終わりにある「-」は、行継続文字とみなされます。
スクリプトに、SQLコメント・デリミタ/* ... */またはANSIおよびISOコメント・デリミタ- -を使用してコメントを入力する方法の詳細は、「スクリプトへのコメントの挿入」を参照してください。
次のスクリプトには、代表的なコメントがいくつか含まれています。
REM COMPUTE uses BREAK ON REPORT to break on end of table BREAK ON REPORT COMPUTE SUM OF "DEPARTMENT 10" "DEPARTMENT 20" - "DEPARTMENT 30" "TOTAL BY JOB_ID" ON REPORT REM Each column displays the sums of salaries by job for REM one of the departments 10, 20, 30. SELECT JOB_ID, SUM(DECODE( DEPARTMENT_ID, 10, SALARY, 0)) "DEPARTMENT 10", SUM(DECODE( DEPARTMENT_ID, 20, SALARY, 0)) "DEPARTMENT 20", SUM(DECODE( DEPARTMENT_ID, 30, SALARY, 0)) "DEPARTMENT 30", SUM(SALARY) "TOTAL BY JOB_ID" FROM EMP_DETAILS_VIEW GROUP BY JOB_ID;
REPF[OOTER] [PAGE] [printspec [text | variable] ...] | [ON | OFF]
printspecには、テキストの配置および書式設定に使用される次の句のうちの1つ以上を指定します。
COL n
S[KIP] [n]
TAB n
LE[FT]
CE[NTER]
R[IGHT]
BOLD
FORMAT text
各レポートの下部に、指定したレポート・フッターを配置して書式設定したり、現行のREPFOOTER定義を表示します。
現行のREPFOOTER定義を表示するには、句を指定しないでREPFOOTERのみを入力します。
REPFOOTERコマンド構文の項および句については、「REPHEADER」コマンドを参照してください。
テキストまたは変数の前にprintspec句を入力しない場合、REPFOOTERは、テキストまたは変数を左揃えにします。
printspecには、定数および変数をいくつでも指定できます。SQL*Plusは、定数および変数を指定した順序で表示し、それぞれの定数または変数をその直前のprintspec句で指定されている位置および書式に設定します。
「END EMPLOYEE LISTING REPORT」を独立ページのレポート・フッターとして定義して、中央揃えにするには、次のように入力します。
REPFOOTER PAGE CENTER 'END EMPLOYEE LISTING REPORT' TTITLE RIGHT 'Page: ' FORMAT 999 SQL.PNO SELECT LAST_NAME, SALARY FROM EMP_DETAILS_VIEW WHERE SALARY > 12000;
レポート・フッターの定義を変更しないで、レポート・フッターを非表示にするには、次のように入力します。
REPFOOTER OFF
REPH[EADER] [PAGE] [printspec [text | variable] ...] | [ON | OFF]
printspecには、テキストの配置および書式設定に使用される次の句のうちの1つ以上を指定します。
COL n
S[KIP] [n]
TAB n
LE[FT]
CE[NTER]
R[IGHT]
BOLD
FORMAT text
各レポートの上部に、指定したレポート・ヘッダーを配置して書式設定したり、現行のREPHEADER定義を表示します。
現行のREPHEADER定義を表示するには、句を指定しないでREPHEADERのみを入力します。
これらの項および句は、REPFOOTERコマンドにも適用されます。
PAGE
指定したレポート・ヘッダーを印刷した後または印刷する前に、新規ページが開始されます。
text
レポート・ヘッダーまたはレポート・フッターのテキストを指定します。1行に2つ以上の語を入れるには、textを一重引用符で囲んで入力します。デフォルトはNULLです。
variable
置換変数、または次のシステム管理値のいずれかを指定します。SQL.LNOはカレント行の番号です。SQL.PNOは現行のページ番号です。SQL.CODEは現行のエラー・コードです。SQL.RELEASEは現行のOracleデータベースのリリース番号です。SQL.USERは現行のユーザー名です。
これらの値の1つを出力するには、適切な変数をレポート・ヘッダーまたはレポート・フッターの中で参照します。FORMAT句を使用して、variableの形式を設定できます。
OFF
定義に影響を与えずに、レポート・ヘッダーまたはレポート・フッターをオフ(非表示)にします。
COL n
カレント行の列nまでインデントします(列nを過ぎている場合は、後退します)。ここでいう「列」とは、印刷位置のことで、表の列ではありません。
S[KIP] [n]
新規行の先頭までn回スキップします。nを省略すると、1回スキップします。nに0を入力すると、カレント行の先頭まで戻ります。
TAB n
n列分前方に(nに負の値を入力した場合は後方に)スキップします。ここでいう「列」とは、印刷位置のことで、表の列ではありません。
LE[FT] CE[NTER] R[IGHT]
カレント行のデータを、それぞれ左揃え、中央揃えおよび右揃えにします。SQL*Plusは、printspecの終わりまで、あるいは次のLEFT、CENTER、RIGHTまたはCOLコマンドまでのデータ項目を、1グループとして整列させます。CENTERおよびRIGHTでは、SET LINESIZE値を使用し、後続のデータ項目の位置が計算されます。
BOLD
データを太字で印刷します。SQL*Plusは、端末上で同じデータを3回続けて出力することによって、太字印刷を行います。一部のオペレーティング・システムでは、SQL*Plusがプリンタにテキストを太字でなく3回連続で印刷するように指示することがあります。
FORMAT text
次のFORMAT句まで、またはこのコマンドの終わりまでの、データ項目の書式を決定する書式モデルを指定します。書式モデルは、A10や$999などのテキスト定数である必要があります。書式設定および有効な書式モデルの詳細は、「COLUMN」コマンドを参照してください。
書式モデルのデータ型が、指定したデータ項目のデータ型と一致しない場合、FORMAT句はその項目には影響しません。
指定したデータ項目の前に適切な書式モデルがない場合、SQL*Plusは、SET NUMFORMATで指定された書式に従って、NUMBER値を出力します。また、SET NUMFORMATが指定されていない場合はデフォルトの書式に従って、NUMBER値を出力します。SQL*Plusは、デフォルトの書式を使用してDATE値を出力します。
テキストまたは変数の前にprintspec句を入力しない場合、REPHEADERは、テキストまたは変数を左揃えにします。
printspecには、定数および変数をいくつでも指定できます。SQL*Plusは、定数および変数を指定した順序で表示し、それぞれの定数または変数をその直前のprintspec句で指定されている位置および書式に設定します。
「EMPLOYEE LISTING REPORT」を独立ページのレポート・ヘッダーとして定義して、中央揃えにするには、次のように入力します。
REPHEADER PAGE CENTER 'EMPLOYEE LISTING REPORT' TTITLE RIGHT 'Page: ' FORMAT 999 SQL.PNO SELECT LAST_NAME, SALARY FROM EMP_DETAILS_VIEW WHERE SALARY > 12000;
レポート・ヘッダーの定義を変更せずに非表示にするには、次のように入力します。
REPHEADER OFF
R[UN]
現在、SQLバッファに格納されているSQLコマンドまたはPL/SQLブロックを表示して実行します。
バッファにはコマンド履歴リストはなく、またSQL*Plusコマンドは記録されません。
RUNを実行すると、SQLバッファの最終行がカレント行になります。
/(スラッシュ)コマンドは、RUNと同様の動作をしますが、SQLバッファ内のコマンドを画面に表示しません。SQLバッファには、常に最新のSQL文またはPL/SQLブロックが含まれます。
SQLバッファに次のスクリプトが含まれているとします。
SELECT DEPARTMENT_ID FROM EMP_DETAILS_VIEW WHERE SALARY>12000
RUNを使用してスクリプトを実行するには、次のように入力します。
RUN
1 SELECT DEPARTMENT_ID |
iSQL*Plusでは使用できません。iSQL*Plusの場合は、Save Scriptを使用します。
SAV[E] [FILE] file_name[.ext] [CRE[ATE] | REP[LACE] | APP[END]]
SQLバッファの内容を、オペレーティング・システムのスクリプトに保存します。iSQL*Plusでは、「スクリプトの保存」ボタンをクリックしてスクリプトに入力領域の内容を保存します。
バッファにはコマンド履歴リストはなく、またSQL*Plusコマンドは記録されません。
FILE
後続の引数によって、保存したスクリプトに付ける名前を指定するキーワードです。オプションのキーワードは、通常、省略されます。
fileはコマンド・キーワードであるため、fileというスクリプトを保存する場合は、一重引用符で囲む必要があります。
file_name[.ext]
バッファの内容を保存するスクリプトを指定します。
CREATE
指定した名前で、ファイルを新規作成します。これがデフォルトの動作です。
REP[LACE]
既存のファイルの内容を置換します。ファイルが存在しない場合、ファイルが作成されます。
APP[END]
指定したファイルの終わりに、バッファの内容を追加します。
拡張子を指定しない場合、SQL*Plusは、デフォルトのコマンド・ファイル拡張子(通常はSQL)が指定されたものとみなします。このデフォルトの拡張を変更する方法については、「SET SUF[FIX] {SQL | text}」を参照してください。
SAVEコマンド句(CREATE、REPLACEまたはAPPEND)と同じ名前でファイルを保存するには、ファイル拡張子を指定する必要があります。
SAVEを使用してSQLバッファの内容を保存すると、スラッシュ(/)を含む1行がファイルの終わりに追加されます。
名前がDEPTSALRPTで、拡張子がSQLのファイルにバッファ内容を保存するには、次のように入力します。
SAVE DEPTSALRPT
名前がDEPTSALRPTで、拡張子がOLDのファイルにバッファ内容を保存するには、次のように入力します。
SAVE DEPTSALRPT.OLD
現行のセッションに対するSQL*Plus環境を変更するシステム変数を設定します。たとえば、この操作は、次の目的のために行います。
システム変数の設定には、iSQL*Plusの「プリファレンス」画面も使用できます。
SET system_variable value
system_variableおよびvalueは、次のSETシステム変数の一覧表に示すいずれかの句を表します。
SQL*Plusには、SQL*Plusセッション用の特定の環境を設定可能にするシステム変数(SETコマンド変数)が保持されています。これらのシステム変数は、SETコマンドを使用して変更し、SHOWコマンドを使用して表示できます。
SET ROLEおよびSET TRANSACTIONは、SQLコマンドです(詳細は、『Oracle Database SQLリファレンス』を参照)。キーワードTRANSACTIONまたはROLEが後に指定されていない場合、SETはSQL*Plusコマンドとみなされます。
| システム変数 | 説明 |
|---|---|
|
DBMS_APPLICATION_INFOパッケージを使用して、スクリプトの自動登録を設定します。 |
|
|
SQL*Plusがデータベースから一度にフェッチする行の数(バッチ)を設定します。 |
|
|
データベースに対する保留中の変更を、Oracleデータベースがコミットする時点を制御します。 |
|
|
バインド変数の自動出力を設定します。 |
|
|
ONを指定すると、リカバリ時に必要なアーカイブREDOログ・ファイルのデフォルトのファイル名を自動的に適用するためにRECOVERコマンドが設定されます。 |
|
|
SET AUTOT[RACE] {ON | OFF | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]] |
正常に実行されたSQL DML文(SELECT、INSERT、UPDATEまたはDELETE)のレポートを表示します。 |
|
PL/SQLブロックを終了するために使用する英数字以外の文字を、 cに設定します。 |
|
|
1行に入力された複数のSQL*Plusコマンドを区切るために使用する英数字以外の文字を、cに設定します。 |
|
|
iSQL*Plusでは、SET COLSEPによって、<PRE>タグ内部にレンダリングされる列出力と列出力の間に出力される列セパレータ文字を指定します。 選択された列の間に出力するテキストを設定します。 |
|
|
通常はSQL*Plusが置換変数名の一部として解釈する文字を、変数の直後に続けて指定する場合に、置換変数参照を終了させるために使用できる文字を設定します。 |
|
|
データベースに対する変更を、COPYコマンドによってコミットした後のバッチの数を制御します。 |
|
|
COPYコマンドを使用して表へ挿入または追加しているときは、データ型の比較を行わないように設定します。 |
|
|
変数の接頭辞として使用する文字を、cに設定します。 |
|
|
SET DESCRIBE [DEPTH {1 | n | ALL}] [LINENUM {ON | OFF}] [INDENT {ON | OFF}] |
オブジェクトの定義を繰り返し表示する深さレベルを設定します。 |
|
コマンドが実行されるときに、STARTコマンドによりスクリプト内の各コマンドを表示するかどうかを制御します。 |
|
|
EDITコマンド用のデフォルトのファイル名を設定します。 |
|
|
ページのどこから各レポートが始まるかを制御します。 |
|
|
エスケープ文字として使用する文字を定義します。 |
|
|
問合せによってn個以上のレコードを選択した場合に、問合せから戻されるレコード数を表示します。 |
|
|
SQL文がANSI/ISO SQL92規格に準拠しているかどうかを調べます。 |
|
|
出力をユーザーの表示デバイスに、いつ送るかを制御します。 |
|
|
レポートへの列ヘッダーの出力を制御します。 |
|
|
ヘッダーのセパレータ文字として入力する文字を定義します。 |
|
|
セッションのデフォルトのインスタンスを、指定したインスタンス・パスに変更します。 |
|
|
SET LIN[ESIZE] {80 | n} |
SQL*Plusが新しい行を開始する前に、1行に表示する文字の合計数を設定します。 |
|
CLOBおよびNCLOBデータを取得し、表示する開始位置を設定します。 |
|
|
リカバリ中に取得されるアーカイブ・ログの位置を指定します。 |
|
|
LONG、CLOB、NCLOBおよびXMLType値を表示するため、およびLONG値をコピーするための最大幅をバイト単位で設定します。 |
|
|
SQL*PlusがLONG、CLOB、NCLOBまたはXMLType値を取得するときの増分値のサイズ(バイト単位)を設定します。 |
|
|
iSQL*Plusが使用する出力であるHTMLマークアップ・テキストを出力します。 |
|
|
各ページの最上部から上部タイトルまでの間に入れる空白行の数を設定します。 |
|
|
SQL SELECTコマンドの実行結果の中でNULL値を表すテキストを設定します。 |
|
|
数値を表示するためのデフォルトの書式を設定します。 |
|
|
数値を表示するためのデフォルトの幅を設定します。 |
|
|
各ページの行数を設定します。 |
|
|
レポートの実行中に端末のスクロール制御を実現します。 |
|
|
RECSEPには、SQL*Plusがどこでレコードを分離するかを指定します。 |
|
|
レコード・セパレータを表示または出力します。 |
|
|
ストアド・プロシージャの出力(DBMS_OUTPUT PUT_LINE)またはPL/SQLブロックの出力を、SQL*Plusで表示するかどうかを制御します。 |
|
|
シフト文字を表示する端末に適した位置合せを実現します。 |
|
|
SETを使用して、SQL*Plusシステム変数の設定を変更したときに、新旧の設定値をSQL*Plusで表示するかどうかを制御します。 |
|
|
SQL*PlusがSQLコマンドまたはスクリプト内に空白行を入れるかどうかを制御します。 |
|
|
SQLコマンドおよびPL/SQLブロックの大/小文字を実行直前に変換します。 |
|
|
1つのSQL*Plusコマンドをハイフン(-)を使用して次の行に続けた後で、プロンプトとしてSQL*Plusによって表示する文字列シーケンスを設定します。 |
|
|
SQLコマンドまたはPL/SQLブロックの2行目以降の行のためのプロンプトを設定します。 |
|
|
VARIABLEの動作または出力書式をx y [z]で指定されたリリースまたはバージョン互換に設定します。 |
|
|
SQL*Plusの接頭文字を設定します。 |
|
|
SQL*Plusコマンド・プロンプトを設定します。 |
|
|
SQLコマンドを終了および実行するために使用する文字を、cに設定します。 |
|
|
スクリプトを参照するコマンドの中でSQL*Plusが使用するデフォルトのファイルを設定します。 |
|
|
SQL*Plusが空白をどのように端末に出力するかを指定します。 |
|
|
スクリプトから実行するコマンドによる出力の表示を制御します。 |
|
|
現在の時刻表示を制御します。 |
|
|
タイミング統計の表示を制御します。 |
|
|
SQL*Plusで、それぞれの表示行の終わりに後続の空白を入れるかどうかを指定します。 |
|
|
SQL*Plusで、それぞれのスプール行の終わりに後続の空白を入れるかどうかを指定します。 |
|
|
レポートの列ヘッダーに下線を付けるために使用する文字を、cに設定します。 |
|
|
置換変数を値に置き換える前後で、SQL文またはPL/SQLコマンドのテキストを表示するかどうかを制御します。 |
|
|
カレント行の幅に対して、選択した行が長すぎる場合に、切り捨てるかどうかを制御します。 |
|
|
使用するベースURIを定義します。これは、汎用XQuery式の作成時にアクセスするファイルの接頭辞を変更する場合に有効です。 |
|
|
XQueryの結果の順序付けを制御します。 |
|
|
作成されるノードまたは戻されるノードの保存モードを設定します。 |
|
|
XQueryコンテキストの項目を指定します。ノードまたは値のいずれかを指定できます。 |
アスタリスク(*)は、iSQL*PlusではそのSETオプションを使用できないことを示します。
DBMS_APPLICATION_INFOパッケージを使用して、スクリプトの自動登録を設定します。
この設定によって、各スクリプトのパフォーマンスおよびリソースの使用状況をDBAが監視できます。V$SESSIONおよびV$SQLAREA仮想表のMODULE列には、登録名が表示されます。DBMS_APPLICATION_INFO.READ_MODULEプロシージャを使用して、登録名を読み取ることもできます。
ONを指定すると、@コマンド、@@コマンドまたはSTARTコマンドによって起動されたスクリプトが登録されます。OFFを指定すると、スクリプトの登録が使用禁止になります。そのかわりに、テキストの現在の設定値が登録されます。textには、スクリプトが実行されていない場合、またはAPPINFOがOFFの場合(デフォルト)に登録するテキストを指定します。textのデフォルトは、「SQL*Plus」です。textに複数の語を入力する場合、それらの語全体を引用符で囲む必要があります。textの最大長は、DBMS_APPLICATION_INFOパッケージによって制限されます。
登録名の書式は、nn@xfilenameです。nnは、スクリプトの深さレベルです。xは、スクリプト名を切り捨てる場合は「< 」、そうでない場合は空白です。filenameはスクリプト名で、DBMS_APPLICATION_INFOパッケージ・インタフェースで許可されている長さまで切り捨てられる場合があります。
DBMS_APPLICATION_INFOパッケージの詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。
APPINFOの値(デフォルトはOFF)を表示するには、次のように入力します。
SET APPINFO ON SHOW APPINFO
APPINFO is ON and set to "SQL*Plus" |
デフォルト・テキストを変更するには、次のように入力します。
SET APPINFO 'This is SQL*Plus'
登録が行われたことを確認するには、次のように入力します。
VARIABLE MOD VARCHAR2(50) VARIABLE ACT VARCHAR2(40) EXECUTE DBMS_APPLICATION_INFO.READ_MODULE(:MOD, :ACT);
PL/SQL procedure successfully completed. |
PRINT MOD
MOD |
APPINFOをデフォルト設定に戻すには、次のように入力します。
SET APPINFO OFF
SQL*Plusがデータベースから一度にフェッチする行数を設定します。
有効な値は1〜5000です。値を大きくすると、多数の行をフェッチする問合せおよび副問合せの効率は向上しますが、必要なメモリーも多くなります。100より大きい値を使用しても、パフォーマンスはほとんど向上しません。ARRAYSIZEを指定しても、効率を上げる以外にSQL*Plus操作の結果に対して影響はありません。
SQLまたはPL/SQLコマンドの後、データベースに対する保留中の変更がOracleデータベースによってコミットされる時点を制御します。
ONを指定すると、OracleデータベースによってINSERT、UPDATE、DELETEまたはPL/SQLブロックがそれぞれ正常に実行された後で、データベースに対する保留中の変更がコミットされます。OFFを指定すると、自動コミットされないため、手動で(たとえば、SQLコマンドのCOMMITを使用して)変更をコミットする必要があります。IMMEDIATEを指定すると、ONと同じ機能が得られます。nを指定すると、Oracleデータベースによってn個のSQL INSERT、UPDATE、DELETEの各コマンドまたはPL/SQLブロックが正常に実行された後で、データベースに対する保留中の変更がコミットされます。nは、0(ゼロ)以上2,000,000,000未満である必要があります。文カウンタは、n個のINSERT、UPDATE、DELETEコマンドまたはPL/SQLブロック、コミット、ロールバックまたはSET AUTOCOMMITコマンドの完了後、0(ゼロ)にリセットされます。
SET AUTOCOMMITでは、コミットの動作はSQL*Plusの終了時には変更されません。コミットされていないデータは、デフォルトでコミットされます。
バインド変数の自動出力を設定します。
ONまたはOFFによって、SQL*Plusがバインド変数(正常に実行されたPL/SQLブロックで参照されているか、またはEXECUTEコマンドで使用されているもの)を自動的に表示するかどうかを制御します。
バインド変数の表示方法の詳細は、「PRINT」コマンドを参照してください。
ONを指定すると、リカバリ時に必要なアーカイブREDOログ・ファイルのデフォルトのファイル名を自動的に適用するためにRECOVERコマンドが設定されます。
予期できる名前で予期できる位置に必要なファイルが提供されるので、対話は必要ありません。使用されるファイル名は、初期化パラメータLOG_ARCHIVE_DESTおよびLOG_ARCHIVE_FORMATの値から導出されます。
OFFを指定すると、デフォルト・オプションとして、手動でファイル名を入力するか、または自動生成されたデフォルトのファイル名を指定するかを選択できます。データベース・リカバリの詳細は、「RECOVER」コマンドを参照してください。
iSQL*PlusでRECOVERコマンドを使用するには、AUTORECOVERYをONに設定する必要があります。
AUTOMATICにリカバリ・モードを設定するには、次のように入力します。
SET AUTORECOVERY ON RECOVER DATABASE
正常に実行されたSQL DML文(SELECT、INSERT、UPDATEまたはDELETE)のレポートを表示します。
レポートには、実行統計および問合せ実行パスを含めることができます。
OFFを指定すると、トレース・レポートは表示されません。ONを指定すると、トレース・レポートが表示されます。TRACEONLYを指定すると、トレース・レポートは表示されますが、問合せデータは、存在しても出力されません。EXPLAINを指定すると、実行計画が実行されて、問合せ実行パスが表示されます。STATISTICSを指定すると、SQL文統計が表示されます。EXPLAIN PLANの詳細は、『Oracle Database SQLリファレンス』を参照してください。
明示オプションを指定しないで、ONまたはTRACEONLYを使用すると、デフォルトでEXPLAIN STATISTICSが使用されます。
TRACEONLYオプションは、大きい問合せデータを抑止する場合に有効です。STATISTICSを指定すると、SQL*Plusは、サーバーから問合せデータをフェッチしますが、データは表示しません。
AUTOTRACEレポートは、文が正常に完了した後で出力されます。
実行計画および統計表示については、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。
SQL*PlusがSTATISTICSレポートを作成すると、データベースへの2番目の接続が自動的に確立されます。STATISTICSオプションがOFFに設定されたか、またはSQL*Plusからログアウトした場合に、この接続はクローズされます。
AUTOTRACEレポートの書式は、接続されているサーバーのバージョンおよびサーバーの構成によって異なります。AUTOTRACE PLANの追加情報および表形式の出力は、Oracle Database 10gリリース1(10.1)以上に接続している場合にサポートされます。それより前のデータベースに接続する場合は、旧形式またはAUTOTRACEレポートが使用されます。
FIPSフラグ付けが使用可能な状態のときは、AUTOTRACEは使用できません。
AUTOTRACE PLANでは、出力の表示にglogin.sql列の定義は使用されません。
AUTOTRACEの詳細は、「文のトレース」を参照してください。
PL/SQLブロックを終了するために使用する文字を、cに設定します。
英数字または空白は使用できません。ブロックを実行するには、RUNまたは/(スラッシュ)コマンドを実行する必要があります。
OFFを設定すると、SQL*Plusは、PL/SQLブロック・ターミネータを認識しません。ONを設定すると、cの値を最近使用された文字ではなくデフォルトのピリオド(.)に戻します。
1行に入力された複数のSQL*Plusコマンドを区切るために使用する英数字以外の文字を、cに設定します。
ONまたはOFFは、1行に複数のコマンドを入力できるかどうかを制御します。ONを設定すると、自動的にコマンド・セパレータ文字がセミコロン(;)に設定されます。
TTITLEでタイトルを指定して、同一行にCOLUMNで列を書式設定するには、次のように入力します。
SET CMDSEP + TTITLE LEFT 'SALARIES' + COLUMN SALARY FORMAT $99,999 SELECT LAST_NAME, SALARY FROM EMP_DETAILS_VIEW WHERE JOB_ID = 'SH_CLERK';
列出力と列出力の間に出力される列セパレータ文字を設定します。
COLSEP変数に空白または句読記号が含まれている場合は、一重引用符でテキストを囲む必要があります。textのデフォルト値は単一の空白です。
複数行を含む行の場合、異なる行を開始する列の間には列セパレータは出力されません。列セパレータは、BREAK...SKIP nによって生成される空白行には表示されず、レコード・セパレータが列セパレータで上書きされることもありません。詳細は、「SET RECSEP {WR[APPED] | EA[CH] | OFF}」を参照してください。
列セパレータ(SET COLSEP)は、iSQL*Plusでは、「事前に書式設定された出力」がON(SET MARKUP HTML PREFORMAT)の場合にのみ使用されます。
列セパレータを「|」に設定するには、次のように入力します。
SET MARKUP HTML PREFORMAT ON SET COLSEP '|' SELECT LAST_NAME, JOB_ID, DEPARTMENT_ID FROM EMP_DETAILS_VIEW WHERE DEPARTMENT_ID = 20;
LAST_NAME |JOB_ID |DEPARTMENT_ID |
通常は、SQL*Plusが置換変数の一部として解釈する文字を、変数の直後に続けて指定する場合に、置換変数参照を終了するために使用できる文字を設定します。
CONCATをオンに切り替えると、SQL*PlusはCONCATの値をピリオドにリセットします。
データベースに対する変更を、COPYコマンドによってコミットした後の行数を制御します。
COPYでは、n個の行バッチがコピーされるたびに、宛先データベースへの行がコミットされます。有効な値は0〜5000です。ARRAYSIZE変数を使用して、バッチのサイズを設定できます。COPYCOMMITを0に設定すると、COPYではコピー操作が終わったときにのみコミットを実行します。
COPYコマンドを使用して表へ挿入または追加しているときは、データ型の比較を行わないように設定します。
このため、CHARをDB2 DATEにコピーする必要がある場合、DB2へのコピーが容易になります。
置換変数の接頭辞として使用する文字を、cに設定します。
ONまたはOFFによって、SQL*Plusがコマンドをスキャンして置換変数を検索し、その値に置換するかどうかを指定します。ONを設定すると、cの値を最近使用された文字ではなくデフォルトの「&」に戻します。OFFを設定すると、SCAN変数の設定がオーバーライドされます。
SCAN変数の詳細は、「SET SCAN {ON|OFF}(廃止)」を参照してください。
オブジェクトの定義を繰り返し表示する深さレベルを設定します。
DEPTH句の有効範囲は、1〜50です。SET DESCRIBE DEPTH ALLを設定する場合、深さは最大レベルの50に設定します。1つのオブジェクトに複数のオブジェクト型が含まれている場合は、行番号および属性や列のインデントを表示することもできます。SET LINESIZEコマンドを使用して、表示されるデータ幅を制御します。
オブジェクトの詳細は、「DESCRIBE」コマンドを参照してください。
オブジェクト型ADDRESSを作成するには、次のように入力します。
CREATE TYPE ADDRESS AS OBJECT ( STREET VARCHAR2(20), CITY VARCHAR2(20) ); /
Type created |
オブジェクト型ADDRESSのネストされたオブジェクトEMPADDRを含む表EMPLOYEEを作成するには、次のように入力します。
CREATE TABLE EMPLOYEE (LAST_NAME VARCHAR2(30), EMPADDR ADDRESS, JOB_ID VARCHAR2(20), SALARY NUMBER(7,2) ); /
Table created |
深さレベル2まで表EMPLOYEEを表示して、行数も表示しながら出力をインデントするには、次のように入力します。
SET DESCRIBE DEPTH 2 LINENUM ON INDENT ON DESCRIBE employee
@、@@またはSTARTを使用して実行するスクリプトでコマンドをエコー表示するかどうかを制御します。ONを指定すると、画面にコマンドが表示されます。OFFを指定すると、非表示になります。ECHOは、対話方式で入力するコマンドまたはオペレーティング・システムからSQL*Plusにリダイレクトするコマンドの表示には影響しません。
SET EDITFILEは、iSQL*Plusではサポートされていません。
EDITコマンド用のデフォルトのファイル名を設定します。EDITコマンドの詳細は、「EDIT」コマンドを参照してください。EDITコマンド用のデフォルトのファイル名は、SQLバッファであるafiedt.bufです。バッファにはコマンド履歴リストはなく、またSQL*Plusコマンドは記録されません。
パスまたはファイル拡張子(あるいはその両方)を挿入できます。デフォルトの拡張を変更する方法については、「SET SUF[FIX] {SQL | text}」を参照してください。デフォルトのファイル名およびファイル名の最大長は、オペレーティング・システムによって異なります。
ページのどこから各レポートが始まるかを制御します。
OFFを指定すると、各レポートは新しいページの一番上から始まります。ONを指定すると、新しいページのどこからでもレポートを開始できます。直前のレポートが終了した直後に次のレポートを出力するには、EMBEDDEDをONに設定します。
エスケープ文字として使用する文字を定義します。
OFFを指定すると、エスケープ文字の定義が解除されます。ONを指定すると、エスケープ文字が使用可能になります。ONを指定すると、cの値がデフォルトの「¥」に戻ります。
置換文字(SET DEFINEで指定された文字)の前にエスケープ文字を指定することによって、SQL*Plusにその置換文字を変数置換のための要求としてでなく、通常の文字として処理するように指示できます。
感嘆符(!)をエスケープ文字として定義し、次のように入力したとします。
SET ESCAPE ! ACCEPT v1 PROMPT 'Enter !&1:'
次のプロンプトが表示されます。
Enter &1: |
エスケープ文字をデフォルト値の¥(円記号)に戻すには、次のように入力します。
SET ESCAPE ON
スクリプトがn個以上のレコードを選択した場合に、スクリプトから戻されるレコード数を表示します。
ONまたはOFFによって、この表示をオンまたはオフにできます。フィードバックをONに設定すると、nが1に設定されます。フィードバックを0に設定することは、OFFに設定するのと同じです。
また、SET FEEDBACK OFFによって、SQLまたはPL/SQL文が正常に実行された後に表示される確認メッセージ(「表が作成されました。」、「PL/SQLプロシージャが正常に完了しました。」など)を非表示にできます。
SQL文がANSI/ISO SQL92規格に準拠しているかどうかを調べます。
規格外の構造体が見つかると、Oracleデータベース・サーバーは、その構造体にエラーのフラグを付け、違反のある構文を表示します。これは、SQL言語のALTER SESSION SET FLAGGERコマンドと同じです。
データベースに接続されていない場合でも、SET FLAGGERを実行できます。FIPSフラグ付けは、SET FLAGGER OFF(またはALTER SESSION SET FLAGGER = OFF)コマンドが成功するか、またはSQL*Plusを終了するまでは、SQL*Plusセッション全体にわたって有効な状態のままになります。
FIPSフラグ付けを使用可能にすると、CONNECT、DISCONNECTおよびALTER SESSION SET FLAGGERコマンドが成功した場合でも、SQL*Plusはこれらのコマンドに対してアラートを表示します。
SET FLUSHは、iSQL*Plusではサポートされていません。
出力をユーザーの表示デバイスに、いつ送るかを制御します。OFFを指定すると、オペレーティング・システムは出力をバッファに格納できます。ONを指定すると、バッファリングは使用禁止になります。FLUSHは表示出力にのみ影響し、スプール出力には影響を与えません。
OFFは、スクリプトを非対話形式で実行する場合(スクリプトの実行が完了するまで出力またはプロンプト(あるいはその両方)を表示させる必要がない場合)のみ使用します。FLUSH OFFを使用すると、プログラムI/Oの量が減り、パフォーマンスが向上する場合があります。
レポートへの列ヘッダーの出力を制御します。
ONを指定すると、列ヘッダーがレポートに出力されます。OFFを指定すると、列ヘッダーが出力されなくなります。
SET HEADING OFFコマンドは、表示される列幅に影響しません。そのコマンドは、列ヘッダーを出力しないようにするのみです。
レポート内で列ヘッダーを非表示にするには、次のように入力します。
SET HEADING OFF
次のようなSQL SELECTコマンドを実行したとします。
SELECT LAST_NAME, SALARY FROM EMP_DETAILS_VIEW WHERE JOB_ID = 'AC_MGR';
出力結果は次のようになります。
Higgins 12000 |
列ヘッダーの表示を戻すには、次のように入力します。
SET HEADING ON
列ヘッダーの行ブレークとして使用する文字を定義します。
ヘッダー区切り文字に、英数字または空白は使用できません。ヘッダー区切り文字を、COLUMNコマンドの中で、および旧形式のBTITLEおよびTTITLEの中で使用して、列ヘッダーまたはタイトルを複数の行に分割できます。ONまたはOFFによって、このヘッダー分割をオンまたはオフにできます。ヘッダー分割をOFFにすると、SQL*Plusは、ヘッダー区切り文字を他の文字と同様に出力します。ONを指定すると、cの値がデフォルトの「|」に戻ります。
ヘッダー区切り文字(SET HEADSEP)は、iSQL*Plusでは、「事前に書式設定された出力」の設定がON(SET MARKUP HTML PREFORMAT)の場合にのみサポートされます。
セッションのデフォルトのインスタンスを、指定したインスタンス・パスに変更します。
SET INSTANCEコマンドを使用して、データベースへは接続しません。デフォルト・インスタンスは、インスタンスが何も指定されていないときにコマンドに対して使用されます。SET INSTANCEを最初に使用する前の一部のコマンドは、デフォルト・インスタンスと通信します。
ご使用のオペレーティング・システムでデフォルト値のインスタンスをリセットするには、instance_pathを指定しないでSET INSTANCEを入力するか、またはSET INSTANCE LOCALを入力します。
一部のインスタンスに現在接続されていない場合は、インスタンスのみを変更できます。つまり、現行のインスタンスから切断したことを最初に確認する必要があります。インスタンスを設定または変更し、使用可能にして新しく設定するには、インスタンスを再接続します。
このコマンドは、Oracle Netが実行されているときにのみ実行されます。指定するインスタンス・パスとして、一部の有効なOracle Net接続識別子を使用できます。ご使用のオペレーティング・システムでOracle Net接続識別子を指定する方法の詳細は、オペレーティング・システム固有のOracleデータベースのマニュアルを参照してください。インスタンス・パスの最大長は、64文字です。
デフォルト・インスタンスに「PROD1」を設定するには、次のように入力します。
DISCONNECT SET INSTANCE PROD1
インスタンスをローカルのデフォルトに戻すには、次のように入力します。
SET INSTANCE local
インスタンスを変更するには、接続しているインスタンスから切断する必要があります。
SQL*Plusが新しい行を開始する前に、1行に表示する文字の合計数を設定します。
TTITLE、BTITLE、REPHEADERおよびREPFOOTERの場合の、中央揃えおよび右揃えのテキストの位置も、この値によって制御されます。行サイズの設定の変更は、DESCRIBEコマンドによる出力で、テキストの折返しに影響する場合があります。DESCRIBEコマンドで出力される列には、通常、行サイズの割合が割り当てられます。行サイズを増減することによって、表示上、テキストの折返しが意図しない位置で行われる場合があります。LINESIZEは、値1から最大値(システムによって異なります)の範囲内で定義できます。
CLOBおよびNCLOBデータを取得し、表示する開始位置を設定します。
CLOB列のデータを取得するための開始位置を22桁目に設定するには、次のように入力します。
SET LOBOFFSET 22
CLOBデータは、画面上で折り返されます。SQL*Plusは、23番目の文字になるまで切捨てを行いません。
リカバリ中に取得されるアーカイブ・ログの位置を指定します。
デフォルト値は、Oracleデータベース初期化パラメータ・ファイルinit.oraのLOG_ARCHIVE_DEST初期化パラメータで設定されます。pathnameを指定せずにSET LOGSOURCEコマンドを使用すると、デフォルト位置がリストアされます。
リカバリするログ・ファイルのデフォルト位置を、/usr/oracle10/dbs/archディレクトリに設定するには、次のように入力します。
SET LOGSOURCE "/usr/oracle10/dbs/arch" RECOVER DATABASE
LONG、CLOB、NCLOBおよびXMLType値を表示するため、およびLONG値をコピーするための最大幅をバイト単位で設定します。
SET LONGCHUNKSIZEコマンドの値に関係なく、LONG列の問合せには、SET LONGで指定されたデータの量を格納するための十分なローカル・メモリーが必要です。この要件は、LOBの問合せには適用されません。
LONG列を含む表は、作成しないことをお薦めします。LONG列は、下位互換性のためにのみサポートされています。かわりに、LOB列(CLOB、NCLOB)を使用します。LOB列は、LONG列より制限が少なく、現在でも機能が拡張されています。
nの最大値は2,000,000,000バイトです。
LONG値を表示およびコピーするためにフェッチする最大バイト数を500に設定するには、次のように入力します。
SET LONG 500
LONGデータは、画面上で折り返されます。SQL*Plusは、501バイト目から切捨てを行います。LONGのデフォルト値は80バイトです。
SQL*PlusがCLOB、LONG、NCLOBまたはXMLType値の取得に使用する増分値のサイズ(バイト単位)を設定します。
LONGCHUNKSIZEは、CLOB、NCLOBなどのオブジェクト・リレーショナル問合せには使用されません。
SQL*PlusがLONG値を取得するときに使用する増分値のサイズを100バイトに設定するには、次のように入力します。
SET LONGCHUNKSIZE 100
LONGデータは、値全体が取得されるまで、またはSET LONGの値に到達するまで(いずれか早い方)、100バイトの増分値で取得されます。
iSQL*Plusが使用する出力であるHTMLマークアップ・テキストを出力します。
iSQL*Plusでは無効なHTML出力を生成するオプションを使用しないように注意してください。ブラウザ画面が壊れる可能性があります。HEADオプションおよびBODYオプションは、動的レポートおよびローカル・ファイルに保存されるレポートに対して有効です。
有効にするには、動的レポート出力の値を変更するSET MARKUPコマンドを、問合せ出力を生成する文の前に指定する必要があります。問合せ出力を生成する最初の文によって、HEAD設定、TABLE設定などのSET MARKUPによって影響を受ける情報の出力がトリガーされます。後続のSET MARKUPコマンドは、すでにレポートに送信されている情報には影響を与えません。
SET MARKUPは、SQL*Plusの出力をHTML形式にエンコードすることを指定するのみです。スプール・ファイルの作成、ファイル名の指定およびファイルへのHTML出力の書込みを開始するには、SET MARKUP HTML ON SPOOL ONおよびSQL*PlusのSPOOLコマンドを使用する必要があります。SET MARKUPのオプションと動作は、SQLPLUS -MARKUPと同じです。
詳細は、「MARKUPオプション」を参照してください。使用方法の例については、「SET MARK[UP] HTML [ON | OFF] [HEAD text] [BODY text] [TABLE text] [ENTMAP {ON | OFF}] [SPOOL {ON | OFF}] [PRE[FORMAT] {ON | OFF}]」および「SQL*PlusからのHTMLレポートの生成」を参照してください。
MARKUPオプションの状態を表示するには、SHOW MARKUPコマンドを使用します。
次に、SET MARKUP HTMLコマンドを使用し、HTMLマークアップ・テキストを指定したファイルにスプールするスクリプトを示します。
任意のテキスト・エディタを使用して、レポート用のHTMLオプションおよび問合せの設定に必要なコマンドを入力します。
SET MARKUP HTML ON SPOOL ON HEAD "<TITLE>SQL*Plus Report</title> - <STYLE TYPE='TEXT/CSS'><!--BODY {background: ffffc6} --></STYLE>" SET ECHO OFF SPOOL employee.htm SELECT FIRST_NAME, LAST_NAME, SALARY FROM EMP_DETAILS_VIEW WHERE SALARY>12000; SPOOL OFF SET MARKUP HTML OFF SET ECHO ON
このスクリプトにはSQL*Plusコマンドが含まれるため、バッファから/(スラッシュ)を使用すると正常に実行されません。テキスト・エディタでスクリプトを保存し、STARTを使用して次のように実行します。
START employee.sql
HTMLスプール・ファイルemployee.htmの書込みと同様に、SET TERMOUTがONにデフォルト設定されているため、出力は画面にも表示されます。Webブラウザにスプール・ファイルemployee.htmを表示できます。次のように表示されます。
各ページの最上部から上部タイトルまでの間に入れる空白行の数を設定します。値0を指定すると、(最初のページも含めて)各ページの開始位置に改ページ文字が設定され、ほとんどの端末で画面がクリアされます。NEWPAGEをNONEに設定した場合、SQL*Plusはレポートのページ間で空白行または改ページ文字を出力しません。
SQL SELECTコマンドの結果にNULL値がある場合に表示されるテキストを設定します。
指定した列のNULL変数の設定を上書きするには、COLUMNコマンドのNULL句を使用します。NULLは、デフォルトでは空白("")で出力されます。
数値を表示するためのデフォルトの書式を設定します。数値書式の詳細は、「COLUMN」コマンドのFORMAT句を参照してください。formatに、数値書式を入力します。
SET NUMFORMAT ""
数値を表示するためのデフォルトの幅を設定します。数値書式の詳細は、「COLUMN」コマンドのFORMAT句を参照してください。
COLUMN FORMAT設定は、SET NUMFORMAT設定より優先されます。SET NUMFORMAT設定は、SET NUMWIDTH設定より優先されます。
iSQL*Plus、コマンドラインおよびWindows GUIの各出力ページの行数を設定します。PAGESIZEを0に設定すると、ヘッダー、ページ・ブレーク、タイトル、初期空白行およびその他の書式設定情報をすべて非表示にできます。
iSQL*Plusでは、各ページで表示される行数を設定します。エラー・メッセージおよび情報メッセージはページ・サイズにカウントされません。そのため、ページの長さは必ずしも同じではありません。iSQL*Plusのページ・サイズのデフォルト値は24です。
レポートの実行中に端末のスクロール制御を実現します。SQL*Plusが一時停止するたびにテキストを表示する場合は、SET PAUSE textを指定した後で、SET PAUSE ONを指定します。
コマンドラインおよびWindows GUIでは、SET PAUSE ONは各PAGESIZEで指定した行数の各レポートの出力開始時に出力を一時停止します。以降の出力を表示するには、[Return]を押します。SET PAUSE textには、SQL*Plusが一時停止するたびに表示するテキストを指定します。テキストに複数の語を含める場合は、textを引用符で囲む必要があります。
端末固有のエスケープ・シーケンスをPAUSEコマンドの中に入れることができます。このようなシーケンスを使用すると、反転表示などの効果を持つメッセージを端末上に作成できます。
iSQL*Plusでは、SET PAUSE ONはtextの値を表示します。その後、出力を一時停止し、PAGESIZEで指定した行数のレポート出力の後で「次のページ」ボタンを表示します。以降の出力レポートを表示するには、「次のページ」ボタンをクリックします。「次のページ」ボタンは、最後に出力されるページには表示されません。
RECSEPには、SQL*Plusがどこでレコードを分離するかを指定します。
たとえば、RECSEPをWRAPPEDに設定すると、SQL*Plusは折り返された行の直後にのみレコード・セパレータを出力します。RECSEPをEACHに設定すると、SQL*Plusは各行の後にレコード・セパレータを出力します。RECSEPにOFFを設定すると、SQL*Plusはレコード・セパレータを出力しません。
「レコード・セパレータの表示」の設定(SET RECSEP)は、「事前に書式設定された出力」がOn(SET MARKUP HTML PREFORMAT)の場合にのみiSQL*Plusでサポートされます。
表示または出力時にレコードを分離する文字を定義します。
レコード・セパレータは、LINESIZEに指定した回数だけ繰り返される1行分のRECSEPCHAR(レコードセパレータ文字)です。デフォルトは単一の空白です。
ストアド・プロシージャの出力(DBMS_OUTPUT.PUT_LINE)またはPL/SQLブロックの出力を、SQL*Plusで表示するかどうかを制御します。DBMS_OUTPUTによる行の長さの制限は32767バイトです。
OFFを指定すると、DBMS_OUTPUT.PUT_LINEの出力が非表示になります。ONを指定すると、出力が表示されます。
ONを指定すると、以前のSET SERVEROUTPUT ON SIZE n FORMAT fのSIZEおよびFORMATが使用されるか、または現在の接続で以前にSET SERVEROUTPUTコマンドが発行されていない場合はデフォルト値が使用されます。
SIZEには、Oracleデータベース・サーバーの内部バッファに格納できる出力のバイト数を設定します。デフォルトはUNLIMITEDです。nは、2000以上1,000,000以下である必要があります。iSQL*Plusでは、「スクリプトの書式設定プリファレンス」画面の「サイズ」フィールドにUNLIMITEDという語を入力できます。
SERVEROUTPUTが設定されている場合、リソースは事前に割り当てられません。パフォーマンスは低下しないため、物理メモリーを保存する場合以外は、UNLIMITEDを使用します。
各サーバー出力行は新しい出力行から開始されます。
WRAPPEDを使用可能にすると、SQL*PlusはSET LINESIZEに指定された行サイズに従ってサーバー出力を折り返し、必要に応じて新しい行を開始します。
WORD_WRAPPEDを使用可能にすると、サーバー出力の各行がSET LINESIZEで指定した行サイズに従って折り返されます。行は、ワード境界で改行されます。SQL*Plusは、各行を左揃えし、先行空白をすべてスキップします。
TRUNCATEDを使用可能にすると、サーバー出力の各行がSET LINESIZEで指定した行サイズになるように切り捨てられます。
UTL_FILEユーティリティおよび関連ユーティリティの使用方法の詳細は、『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』を参照してください。
DBMS_OUTPUT.PUT_LINEの詳細は、『Oracle Databaseアプリケーション開発者ガイド - 基礎編』を参照してください。
DBMS_OUTPUT.PUT_LINEを使用してPL/SQLブロック内のテキストを表示するには、次のように入力します。
SET SERVEROUTPUT ON
次に、SET SERVEROUTPUT ONを使用して匿名プロシージャを実行した結果を示します。
BEGIN DBMS_OUTPUT.PUT_LINE('Task is complete'); END; /
Task is complete. |
次に、SET SERVEROUTPUT ONを使用してトリガーを作成した結果を示します。
CREATE TABLE SERVER_TAB (Letter CHAR); CREATE TRIGGER SERVER_TRIG BEFORE INSERT OR UPDATE - OR DELETE ON SERVER_TAB BEGIN DBMS_OUTPUT.PUT_LINE('Task is complete.'); END; /
Trigger Created. |
INSERT INTO SERVER_TAB VALUES ('M'); DROP TABLE SERVER_TAB; /* Remove SERVER_TAB from database */
Task is complete. |
出力をWORD_WRAPPEDに設定するには、次のように入力します。
SET SERVEROUTPUT ON FORMAT WORD_WRAPPED SET LINESIZE 20 BEGIN DBMS_OUTPUT.PUT_LINE('If there is nothing left to do'); DBMS_OUTPUT.PUT_LINE('shall we continue with plan B?'); END; /
If there is nothing |
出力をTRUNCATEDに設定するには、次のように入力します。
SET SERVEROUTPUT ON FORMAT TRUNCATED SET LINESIZE 20 BEGIN DBMS_OUTPUT.PUT_LINE('If there is nothing left to do'); DBMS_OUTPUT.PUT_LINE('shall we continue with plan B?'); END; /
If there is nothing |
SET SHIFTINOUTは、iSQL*Plusではサポートされていません。
シフト文字を表示する端末に適した位置合せを実現します。SET SHIFTINOUTコマンドは、データとともにシフト文字を表示する端末(たとえば、IBM 3270端末)の場合に使用すると有効です。このコマンドを使用できるのは、シフト文字を検出するキャラクタ・セット(たとえば、JA16DBCS)のときのみです。
端末でシフト文字を可視文字(たとえば、空白またはコロン)として表示するには、VISIBLEを使用します。INVISIBLEは、これと反対で、シフト文字が表示されません。
これらをサポートする端末にシフト文字が表示されるようにするには、次のように入力します。
SET SHIFTINOUT VISIBLE SELECT LAST_NAME, JOB_ID FROM EMP_DETAILS_VIEW WHERE SALARY > 12000;
LAST_NAME JOB_ID |
「:」は、参照できるシフト文字です。
大文字は、マルチバイト・キャラクタを示します。
小文字は、シングルバイト・キャラクタを示します。
SET SHOWMODEは、iSQL*Plusではサポートされていません。
SETを使用して、SQL*Plusシステム変数の設定を変更したときに、新旧の設定値をSQL*Plusで表示するかどうかを制御します。ONを指定すると、設定値が表示されます。OFFを指定すると、非表示になります。SHOWMODE ONの動作は、すでに廃止されたSHOWMODE BOTHと同じです。
SET SQLBLANKLINESは、iSQL*Plusではサポートされていません。
SQL*PlusがSQLコマンドまたはスクリプト内に空白行を入れるかどうかを制御します。ONを指定すると、空白行および新しい行はSQLコマンドまたはスクリプトの一部とみなされます。OFF(デフォルト)を指定すると、SQLコマンドまたはスクリプト内に空白行または新しい行を許可しません。
SQLコマンドのエントリをSQLコマンドを実行しないで停止するには、BLOCKTERMINATORを入力します。SQLコマンドのエントリを停止して、SQL文を実行するには、SQLTERMINATORを入力します。
SQL文での空白行を許可するには、次のように入力します。
SET SQLBLANKLINES ON REM Using the SQLTERMINATOR (default is ";") REM Could have used the BLOCKTERMINATOR (default is ".") SELECT * FROM DUAL ;
出力結果は次のようになります。
D |
SQLコマンドおよびPL/SQLブロックの大/小文字を実行直前に変換します。
SQL*Plusは、引用符で囲まれたリテラルおよび識別子も含めて、コマンド内部のすべてのテキストを変換します。SQLCASEがUPPERの場合は、大文字に変換されます。SQLCASEがLOWERの場合は、小文字に変換されます。SQLCASEがMIXEDの場合は、変更されません。
SQLCASEでは、SQLバッファの内容自体は変更されません。
SET SQLCONTINUEは、iSQL*Plusではサポートされていません。
1つのSQL*Plusコマンドをハイフン(-)を使用して次の行に続けた後で、プロンプトとしてSQL*Plusによって表示する文字列シーケンスを設定します。
感嘆符とそれに続く1個の空白をSQL*Plusコマンド継続プロンプトとして設定するには、次のように入力します。
SET SQLCONTINUE '! '
SQL*Plus は、継続のプロンプトを次のように表示します。
TTITLE 'MONTHLY INCOME' - ! RIGHT SQL.PNO SKIP 2 - ! CENTER 'PC DIVISION'
継続プロンプトのデフォルトは、「>」です。
SET SQLNUMBERは、iSQL*Plusではサポートされていません。
SQLコマンドまたはPL/SQLブロックの2行目以降の行のためのプロンプトを設定します。ONを設定すると、プロンプトは行番号に設定されます。OFFを設定すると、プロンプトはSQLPROMPTの値に設定されます。
動作を、x.y[.z]で指定されたリリースまたはバージョン互換に設定します。
xはバージョン番号を、yはリリース番号を、zはアップデート番号を示します。たとえば、8.1.7、9.0.1または10.2です。SQLPLUSCOMPATIBILITYによって影響を受ける機能は、後述のSQL*Plus互換性マトリックスに示します。また、コマンドラインからSQL*Plusを起動する際に、SQLPLUSコマンドの-C[OMPATIBILITY]引数を使用して、SQLPLUSCOMPATIBILITYの値を設定できます。
SQLPLUSCOMPATIBILITYのデフォルト設定は、SQL*Plusクライアントの値です。
SET SQLPLUSCOMPATIBILITY 10.2.0をスクリプトに追加して、SQL*Plusの将来のバージョンとの互換性を高めることをお薦めします。
SQL*Plus互換性マトリックスに、各SQL*Plusの互換性の設定によって影響を受ける動作を示します。SQL*Plusの互換性モードは、3つの方法で設定できます。
次の表に、動作が変更されるSQL*Plusのリリース、およびそのように動作させるためのSQLPLUSCOMPATIBILITYの最小値を示します。たとえば、VARIABLEコマンドを以前のように動作させるには、9.0.1より前のバージョンのSQL*Plusを使用するか、SQLPLUSCOMPATIBILITYに9.0.1より小さい値を使用する必要があります。SQLPLUSCOMPATIBILITYに設定できる最も低い値は7.3.4です。
SET SQLPREFIXは、iSQL*Plusではサポートされていません。
SQL*Plusの接頭文字を設定します。SQLコマンドまたはPL/SQLブロックを入力している途中で、別の行に、SQL*Plus接頭文字を付けてSQL*Plusコマンドを入力できます。SQL*Plusは、入力中のコマンドまたはPL/SQLブロックに影響を与えずに、別の行に入力したコマンドを即時実行します。接頭文字は、英数字以外の文字にする必要があります。
SET SQLPROMPTは、iSQL*Plusではサポートされていません。
SQL*Plusコマンド・プロンプトを設定します。SET SQLPROMPTによって変数が動的に置換されます。これによって、実行時の変数(現在の接続識別子など)を挿入できます。SQLPROMPTで使用される置換変数の前に「&」を付ける必要はありません。他の置換変数と同様に使用およびアクセスできます。デフォルトのプロンプトでは、変数の置換は「SQL>」に対して試行されません。
変数の置換は、SQLPROMPTにSETを指定するたびに行われます。SQLPROMPTがglogin.sqlに含まれている場合、SQLPROMPTの置換変数はログインまたは接続するたびに更新されます。
接続識別子を表示するSQL*Plusプロンプトを変更するには、次のように入力します。
SET SQLPROMPT "_CONNECT_IDENTIFIER > "
現行のユーザーを表示するSQL*Plusコマンド・プロンプトを設定するには、次のように入力します。
SET SQLPROMPT "_USER > "
SQL*Plusプロンプトを変更して現在の日付、現行のユーザーおよびユーザーの権限レベルを表示するには、次のように入力します。
SET SQLPROMPT "_DATE _USER _PRIVILEGE> "
SQL*Plusプロンプトを変更して定義済の変数を表示するには、次のように入力します。
DEFINE mycon = Prod1 SET SQLPROMPT "mycon> "
Prod1> |
ネストした引用符内のテキストは、置換用には解析されません。SQL*Plusプロンプトに、ユーザー名、「@」および接続識別子をこの順序で表示するには、次のように入力します。
SET SQLPROMPT "_USER'@'_CONNECT_IDENTIFIER > "
PL/SQLブロックまたはSQL文のスクリプトまたはデータ・エントリの終了、スクリプトの実行およびバッファへのスクリプトのロードのために使用する文字を設定します。
英数字または空白は使用できません。OFFを設定すると、SQL*Plusは、コマンド終了記号を認識しません。SQLコマンドを終了するには、空白行かスラッシュ(/)を入力します。SQLBLANKLINESをONに設定すると、SQLコマンドの終了にはBLOCKTERMINATORを使用する必要があります。ONを設定すると、終了記号はデフォルトのセミコロン(;)にリセットされます。
SET SUFFIXは、iSQL*Plusではサポートされていません。
スクリプトを参照するコマンドの中でSQL*Plusが使用するデフォルトのファイル拡張子を設定します。SUFFIXでは、スプール・ファイルの拡張子は制御できません。
デフォルトのコマンド・ファイル拡張子を.SQLから.TXTに設定するには、次のように入力します。
SET SUFFIX TXT
次のように入力したとします。
GET EXAMPLE
SQL*Plus は、EXAMPLE.SQLのかわりに、EXAMPLE.TXTという名前のファイルを検索します。
SET TABは、iSQL*Plusではサポートされていません。
SQL*Plusが空白をどのように端末に出力するかを指定します。OFFを指定すると、空白は空白として出力されます。ONを指定すると、TAB文字が使用されます。TABの設定間隔は8文字です。TABのデフォルト値は、システムによって異なります。
SET TERMOUTは、iSQL*Plusではサポートされていません。
@、@@またはSTARTを使用して実行するスクリプトのコマンドによって生成される出力の表示を制御します。OFFを指定すると非表示になるため、出力を、画面に表示せずにファイルにスプールできます。ONを指定すると、画面に出力が表示されます。TERMOUT OFFは、対話方式で入力するコマンド、またはオペレーティング・システムからSQL*Plusにリダイレクトするコマンドによる出力には影響しません。
SET TIMEは、iSQL*Plusではサポートされていません。
現在の時刻表示を制御します。ONを指定すると、各コマンド・プロンプトの前に現在の時刻が表示されます。OFFを指定すると、時刻が非表示になります。
タイミング統計の表示を制御します。
ONを指定すると、それぞれのSQLコマンドまたはPL/SQLブロックが実行されるたびに、そのタイミング統計が表示されます。OFFを指定すると、各コマンドのタイミング統計が表示されません。
複数のコマンドのタイミング情報については、「TIMING」コマンドを参照してください。
SET TRIMOUTは、iSQL*Plusではサポートされていません。
SQL*Plusで、それぞれの表示行の終わりに後続の空白を入れるかどうかを指定します。ONを指定すると、各行の終わりの空白が削除されるため、パフォーマンスが向上します。特に、低速の通信デバイスからSQL*Plusにアクセスする場合に効果的です。OFFを指定すると、SQL*Plusで後続空白を表示できます。TRIMOUT ONは、スプール出力には影響を与えません。
SET TRIMSPOOLは、iSQL*Plusではサポートされていません。
SQL*Plusで、それぞれのスプール行の終わりに後続の空白を入れるかどうかを指定します。ONを指定すると、各行の終わりの空白が削除されます。OFFを指定すると、SQL*Plusで後続空白を表示できます。TRIMSPOOL ONは、端末出力には影響を与えません。
レポートの列ヘッダーに下線を付けるために使用する文字を設定します。下線文字には、英数字または空白は使用できません。ONまたはOFFによって、下線付けをオンまたはオフにできます。ONを指定すると、cの値がデフォルトの「-」に戻ります。
SET UNDERLINEは、「事前に書式設定された出力」がOn(SET MARKUP HTML PREFORMAT)の場合にのみiSQL*Plusでサポートされます。
置換変数を値と置き換える前後で、SQL文またはPL/SQLコマンドのテキストを表示するかどうかを制御します。ONを指定すると、テキストが表示されます。OFFを指定すると、非表示になります。
現在の行の幅に対して、選択した行の表示が長すぎる場合に、切り捨てるかどうかを制御します。OFFにすると、選択した行が切り捨てられます。ONにすると、選択した行は次の行に折り返されます。
特定の列のWRAPの設定を上書きするには、COLUMNコマンドのWRAPPED句およびTRUNCATED句を使用します。
「行の折返し」のプリファレンス(SET WRAP)は、「事前に書式設定された出力」がOn(SET MARKUP HTML PREFORMAT)の場合にのみiSQL*Plusでサポートされます。
ファンクションで関連URIを解決するために使用するベースURIを指定します。XQueryでアクセスするファイルの接頭辞を変更できるようにします。
BASEURIの設定を解除するには、次のように空の文字列を設定します。
SET XQUERY BASEURI ''
値はXQUERYコマンドの発行時にのみ確認されるため、注意して有効な値を入力してください。
SET XQUERY BASEURI '/public/hr' XQUERY for $i in doc("foo.xml") return $i /
これは、次のようにも入力できます。
XQuery declare base-uri "/public/hr"; for $i in doc("foo.xml") return $i
XQueryの出力の順序付けを設定します。次の3つの値があります。
UNORDERED: データベースから取得された順序で結果が格納されることを指定します。
ORDERED: XQueryで定義された順序で結果が格納されることを指定します。
DEFAULT: データベースのデフォルトを指定します。Oracle Database 10gでは、デフォルトはUNORDEREDです。
SET XQUERY ORDERINGが設定されていない場合、デフォルトはDEFAULT(UNORDERED)です。
SET XQUERY ORDERING ORDERED XQUERY for $i in doc("foo.xml") return $i /
これは、次のようにも入力できます。
XQuery declare ordering ordered; for $i in doc("foo.xml") return $i /
ノードID保存モードを設定します。保存モードは、新規ノードを作成するすべての式(要素コンストラクタなど)またはノードを含む項目あるいはシーケンスを戻すすべての式に適用されます。次の3つの値があります。
BYVALUE: ノードIDを保存する必要がないことを指定します。これは、作成などのノード操作または式の結果として戻されたノード操作がディープ・コピーされ、元のツリーでのコンテキストが失われることを意味します。このノード上でのノードID、親軸、兄弟軸または順序付けをテストする後続の操作は定義されません。
BYREFERENCE: ノードIDを保存する必要があることを指定します。このノード上での後続の操作で、ノードのコンテキストおよび定義が保存されます。
DEFAULT: データベースのデフォルトを指定します。Oracle Database 10gでは、デフォルトはBYVALUEです。
SET XQUERY NODEが設定されていない場合、デフォルトはDEFAULT(BYVALUE)です。
SET XQUERY NODE BYREFERENCE XQUERY for $i in doc("foo.xml") return $i /
これは、次のようにも入力できます。
XQuery declare node byreference; for $i in doc("foo.xml") return $i /
XQueryコンテキスト項目の式を指定します。コンテキスト項目の式によって、コンテキスト項目に対して評価が行われます。コンテキスト項目は、ノード(式fn:doc("bib.xml")//book[fn:count(./author)>1を指定])または原子価(式(1 to 100)[. mod 5 eq 0]を指定)のいずれかです。
XQUERY CONTEXTの設定を解除するには、次のように空の文字列を設定します。
SET XQUERY CONTEXT ''
値はXQUERYコマンドの発行時にのみ確認されるため、注意して有効な値を入力してください。
SET XQUERY CONTEXT 'doc("foo.xml")' XQUERY for $i in /a return $i /
これは、次のようにも入力できます。
XQuery for $i in /a return $i passing XMLQuery("doc('foo.xml')") /
SHO[W] option
optionには、次の項または句を1つ指定します。
system_variable
ALL
BTI[TLE]
ERR[ORS] [ { FUNCTION | PROCEDURE | PACKAGE | PACKAGE BODY | TRIGGER
| VIEW | TYPE | TYPE BODY | DIMENSION | JAVA CLASS } [schema.]name]
LNO
PARAMETERS [parameter_name]
PNO
RECYC[LEBIN] [original_name]
REL[EASE]
REPF[OOTER]
REPH[EADER]
SGA
SPOO[L] (Not available in iSQL*Plus)
SQLCODE
TTI[TLE]
USER
XQUERY
SQL*Plusシステム変数の値または現行のSQL*Plus環境を表示します。SHOW SGAの場合は、DBA権限でのログインが必要です。
system_variable
SETコマンドによって設定される任意のシステム変数を指定します。
ALL
ERRORSおよびSGAを除いて、SHOWのすべてのオプション設定がアルファベット順に表示されます。
BTI[TLE]
現行のBTITLE定義が表示されます。
ERR[ORS] [{FUNCTION | PROCEDURE | PACKAGE | PACKAGE BODY | TRIGGER
| VIEW | TYPE | TYPE BODY | DIMENSION | JAVA CLASS} [schema.]name]
ストアド・プロシージャ(ストアド・ファンクション、プロシージャおよびパッケージを含む)のコンパイル・エラーが表示されます。CREATEコマンドを使用してストアド・プロシージャを作成した後で、ストアド・プロシージャにコンパイル・エラーが検出されると、メッセージが表示されます。エラーを表示するには、SHOW ERRORSを使用します。
引数を指定しないでSHOW ERRORSのみを指定すると、SQL*Plusは最後に作成または変更されたストアド・プロシージャに対するコンパイル・エラーを表示します。PL/SQLストアド・プロシージャのタイプ(ファンクション、プロシージャ、パッケージ、パッケージ本体、トリガー、ビュー、型、型本体、ディメンションまたはJavaクラス)および名前を指定すると、SQL*Plusは、そのストアド・プロシージャのエラーを表示します。コンパイル・エラーの詳細は、『PL/SQL ユーザーズ・ガイドおよびリファレンス』を参照してください。
schemaには、名前付きオブジェクトが含まれています。schemaを省略すると、SHOW ERRORSはオブジェクトが現行のスキーマ内にあるとみなします。
SHOW ERRORSの出力には、エラーの行番号および列番号(LINE/COL)と同時にエラーそのもの(ERROR)も表示されます。LINE/COLおよびERRORのデフォルトの幅は、それぞれ8および65です。デフォルトの幅は、COLUMNコマンドを使用して変更できます。
LNO
カレント行の番号(表示出力またはスプール出力(あるいはその両方)の現行ページの中の位置)が表示されます。
PARAMETERS [parameter_name]
1つ以上の初期化パラメータに対して、現行の値を表示します。このコマンドの後の文字列を使用して、その文字列を含む名前のパラメータのサブセットを参照できます。たとえば、次のように入力したとします。
SHOW PARAMETERS COUNT
NAME TYPE VALUE |
コマンドに続く任意の文字列なしでSHOW PARAMETERSコマンドのみを指定すると、すべての初期化パラメータが表示されます。
SHOW PARAMETERS出力で使用される列名および書式は、サイト・プロファイル・ファイルglogin.sqlに設定されます。値列の表示は切り捨てられる場合があります。
出力結果は、接続しているOracleデータベース・サーバーのバージョンおよび構成によって異なります。PARAMETERS句を使用するには、SELECT ON V_$PARAMETERオブジェクト権限が必要です。権限がない場合、次のメッセージが表示されます。
ORA-00942: 表またはビューが存在しません。
PNO
現行のページ番号が表示されます。
RECYC[LEBIN] [original_name]
FLASHBACK BEFORE DROPコマンドでリカバリ可能なごみ箱内のオブジェクトを表示します。列名を記録したり、解読が容易でない問合せの出力結果を解釈する必要はありません。
SELECT * FROM USER_RECYCLEBIN
問合せによって、次の順序で表示される4つの列が戻されます。
| 列名 | 説明 |
|---|---|
|
|
オブジェクト作成時に使用した元の名前を表示します。 |
|
|
ごみ箱内のオブジェクトの識別に使用する名前を表示します。 |
|
|
オブジェクトの型を表示します。 |
|
|
オブジェクトが削除された時刻を表示します。 |
出力列の書式はCOLUMNコマンドで設定できます。デフォルトのCOLUMNの書式設定は、サイト・プロファイルglogin.sqlに定義されています。
DBAは、独自のuser_recyclebinビューを持っているため、このコマンドを実行して所有しているオブジェクトを表示できます。
REL[EASE]
SQL*PlusがアクセスしているOracleデータベースのリリース番号が表示されます。
REPF[OOTER]
現行のREPFOOTER定義が表示されます。
REPH[EADER]
現行のREPHEADER定義が表示されます。
SPOO[L]
出力がスプールされているかどうかが表示されます。
SGA
現行のインスタンスのシステム・グローバル領域に関する情報が表示されます。ユーザーはSELECT ON V_$SGAオブジェクト権限が必要です。この権限がない場合は、次のメッセージが表示されます。
ORA-00942: 表またはビューが存在しません。
SQLCODE
SQL.SQLCODE(最新の操作のSQLリターン・コード)の値が表示されます。
TTI[TLE]
現行のTTITLE定義が表示されます。
USER
SQL*Plusのアクセスで現在使用しているユーザー名が表示されます。/ AS SYSDBAで接続すると、SHOW USERコマンドで表示されます。
USER is "SYS"
XQUERY
BASEURI、CONTEXT、NODE、ORDERINGなどのXQUERY設定の現行の値を示します。
xquery BASEURI "public/scott" CONTEXT "doc("test.xml")" NODE byreference ORDERING ordered
値が設定されない場合は、次の出力が表示されます。
xquery BASEURI "" CONTEXT "" NODE default ORDERING default
SGAの情報を表示するには、次のように入力します。
SHOW SGA
Total System Global Area 7629732 bytes |
次の例は、ストアド・プロシージャを作成し、そのコンパイル・エラーを表示する方法を示しています。
CONNECT SYSTEM/MANAGER CREATE PROCEDURE HR.PROC1 AS BEGIN :P1 := 1; END; /
Warning: Procedure created with compilation errors. |
SHOW ERRORS PROCEDURE PROC1
NO ERRORS. |
SHOW ERRORS PROCEDURE HR.PROC1
Errors for PROCEDURE HR PROC1: |
AUTORECOVERYが使用可能かどうかを表示するには、次のように入力します。
SHOW AUTORECOVERY
AUTORECOVERY ON |
デフォルト・インスタンスの接続識別子を表示するには、次のように入力します。
SHOW INSTANCE
INSTANCE "LOCAL" |
アーカイブ・ログの位置を表示するには、次のように入力します。
SHOW LOGSOURCE
LOGSOURCE "/usr/oracle90/dbs/arch" |
CJ1およびABCが削除された場所に、FLASHBACKコマンドでリカバリ可能なオブジェクトを表示するには、次のように入力します。
SHOW RECYCLEBIN
CJ1をリストアするには、次のように入力します。
FLASHBACK TABLE CJ1 TO BEFORE DROP;
SHUTDOWN [ABORT | IMMEDIATE | NORMAL | TRANSACTIONAL [LOCAL]]
現在実行中のOracleデータベース・インスタンスを停止します。必要に応じて、データベースのクローズおよびディスマウントが実行されます。
ABORT
トランザクションの完了またはユーザーの切断を待たずに、高速でデータベースの停止処理を進めます。
コミットされていないトランザクションは、ロールバックされません。現在実行中のクライアントから要求されたSQL文は、終了されます。現在データベースに接続しているすべてのユーザーは、暗黙的に切断されます。次回のデータベース起動時に、インスタンス・リカバリが必要になります。
バックグラウンド・プロセスが異常終了した場合、このオプションを使用する必要があります。
IMMEDIATE
現行のトランザクションの完了またはユーザーによるデータベース接続の切断を待ちません。
新しい接続は禁止されます。データベースはクローズおよびディスマウントされ、インスタンスが停止されます。次回のデータベース起動時に、インスタンス・リカバリは必要ありません。
NORMAL
デフォルト・オプションです。ユーザーによってデータベース接続が切断されるまで待ちます。
新しい接続は禁止されます。データベースはクローズおよびディスマウントされ、インスタンスが停止されます。次回のデータベース起動時に、インスタンス・リカバリは必要ありません。
TRANSACTIONAL [LOCAL]
実行中のトランザクションがすべて完了したとき、インスタンスの計画停止が実行されます。すべてのユーザーにログオフを要求しない場合でも、クライアントからの要求処理が失われるのを防止できます。
この状態のインスタンスでは、クライアントからは新しいトランザクションを開始できません。新しいトランザクションを開始しようとすると、切断されます。すべてのトランザクションの完了後、インスタンスに接続しているクライアントは切断されます。SHUTDOWN IMMEDIATE文が実行された場合と同様に、インスタンスが停止します。次回のデータベース起動時に、インスタンス・リカバリは、必要ありません。
LOCALモードは、ローカル・インスタンスのみでのトランザクション停止を指定します。これは、すべてのトランザクションではなく、ローカル・トランザクションの完了を待機するのみです。たとえば、計画した停止のメンテナンスに便利です。
引数なしのSHUTDOWNは、SHUTDOWN NORMALと同じ動作をします。
SYSOPERまたはSYSDBAでデータベースに接続している必要があります。マルチスレッド・サーバーを経由して接続できません。データベースへの接続の詳細は、「CONNECT」コマンドを参照してください。
標準モードでデータベースを停止するには、次のように入力します。
SHUTDOWN
Database closed. |
iSQL*Plusでは使用できません。
SPO[OL] [file_name[.ext] [CRE[ATE] | REP[LACE] | APP[END]] | OFF | OUT]
問合せの結果をファイルに格納し、必要に応じてそのファイルをプリンタに送信します。iSQL*Plusで、ファイルに出力を送るには、Preferencesの設定を使用してください。
file_name[.ext]
スプール出力を格納するファイルの名前を指定します。SPOOLに続けてfile_nameを入力すると、指定ファイルへの表示出力のスプールが開始されます。拡張子を指定しない場合、SPOOLはデフォルトの拡張子(ほとんどのシステムではLSTまたはLIS)が使用されます。n/a
CRE[ATE]
指定した名前で、ファイルを新規作成します。
REP[LACE]
既存のファイルの内容を置換します。ファイルが存在しない場合、ファイルが作成されます。これがデフォルトの動作です。
APP[END]
指定したファイルの終わりに、バッファの内容を追加します。
OFF
スプールを停止します。
OUT
スプールを停止して、ファイルをコンピュータの標準(デフォルト)プリンタに送ります。このオプションは、一部のオペレーティング・システムでは使用できません。
現行のスプール状態を表示するには、句を指定しないでSPOOLのみを入力します。
スクリプト内のコマンドによって生成された出力を画面に表示しないで、その出力をスプールするには、SET TERMOUT OFFを使用します。SET TERMOUT OFFは、対話形式で実行するコマンドからの出力には影響を与えません。
空白を含むファイル名の前後に引用符を使用する必要があります。
SPOOL APPENDコマンドを使用して有効なHTMLファイルを作成するには、PROMPTまたは同様のコマンドを使用してHTMLページのヘッダーとフッターを作成する必要があります。SPOOL APPENDコマンドはHTMLタグを解析しません。
CREATE、APPENDおよびSAVEの各パラメータを無効にするには、SET SQLPLUSCOMPAT[IBILITY] 9.2以下を使用します。SET SQLPLUSCOMPAT[IBILITY]コマンドで制御する機能を判断するには、「SQL*Plus互換性マトリックス」を参照してください。
デフォルトのファイル拡張子を使用して、新しいファイルDLARYに出力を記録するには、次のように入力します。
SPOOL DIARY CREATE
既存のファイルDIARYに出力を追加するには、次のように入力します。
SPOOL DIARY APPEND
ファイルDIARYに出力を記録し、既存の内容に上書きするには、次のように入力します。
SPOOL DIARY REPLACE
スプールを停止し、ファイルをデフォルトのプリンタで印刷するには、次のように入力します。
SPOOL OUT
STA[RT] {url | file_name[.ext] } [arg...]
指定したスクリプトのSQL*Plus文を実行します。スクリプトは、ローカル・ファイル・システムまたはWebサーバーからコールされます。iSQL*Plusでは、url形式のみがサポートされています。通常の方法でスクリプト変数に値を渡します。
url
指定したWebサーバーで実行するスクリプトのURLを指定します。SQL*Plusは、HTTPおよびFTPプロトコルをサポートしますが、HTTPSはサポートしません。今回のリリースでは、http://username:password@machine_name.domain...形式のHTTP認証はサポートされていません。
file_name[.ext]
実行するスクリプトを指定します。このファイルには、対話形式で実行できるコマンドも含まれています。
拡張子を指定しない場合、SQL*Plusは、デフォルトのコマンド・ファイル拡張子(通常はSQL)が指定されたものとみなします。デフォルトの拡張を変更する方法については、「SET SUF[FIX] {SQL | text}」を参照してください。
START file_name.extを入力すると、SQL*Plusは現行のデフォルト・ディレクトリの中で、指定したファイル名および拡張子を持つファイルを検索します。該当するファイルが見つからない場合、SQL*Plusは、そのファイルを見つけるためにシステム依存パスを検索します。オペレーティング・システムによっては、このパス検索がサポートされていない場合もあります。オペレーティング・システム固有の情報については、ご使用のオペレーティング・システムのプラットフォーム固有のOracleマニュアルを参照してください。
arg ...
スクリプト内のパラメータに渡すデータ項目を指定します。1つ以上の引数を入力すると、SQL*Plusは、該当する値をスクリプトのパラメータ(&1、&2など)に代入します。最初の引数によって、出現したすべての&1が置換され、2番目の引数によって、出現したすべての&2が置換されます。
STARTコマンドは、引数の値でパラメータを定義します。このセッションで同じスクリプトをSTARTによって再起動する場合は、新しい引数を入力することも、引数の指定を省略して古い値を使用することもできます。
パラメータの使用方法の詳細は、「置換変数の定義」および「iSQL*Plusの「置換変数」画面」を参照してください。
スクリプト起動時は、COLUMNコマンドなどで事前に設定されたすべての内容が有効です。スクリプトで設定が変更される場合、新しい値が有効になるのは、スクリプト終了後です。
@(アットマーク)および@@(二重アットマーク)コマンドは、STARTと同じ機能です。製品ユーザー・プロファイルでSTARTコマンドを使用禁止にすると、@コマンドおよび@@コマンドも使用禁止になります。これらのコマンドの詳細は、「@(アットマーク)」および「@@(二重アットマーク)」を参照してください。詳細は、「SQL*Plus、SQLおよびPL/SQLコマンドの使用禁止」を参照してください。
スクリプト内でEXITまたはQUITコマンドを使用すると、そこでSQL*Plusが終了します。
名前がPROMOTEで拡張子がSQLの、社員の昇進に使用するファイルには、次のコマンドが含まれていることがあります。
SELECT FIRST_NAME, LAST_NAME, JOB_ID, SALARY FROM EMP_DETAILS_VIEW WHERE JOB_ID='&1' AND SALARY>&2;
スクリプトを実行するには、次のように入力します。
START PROMOTE ST_MAN 7000
Webサーバーにある場合は、次の形式でコマンドを入力します。
START HTTP://machine_name.domain:port/PROMOTE.SQL ST_MAN 7000
machine_name.domainをhost.domain名に、portをスクリプトがあるWebサーバーが使用しているポート番号に置き換える必要があります。
次のコマンドが実行されます。
SELECT LAST_NAME, LAST_NAME FROM EMP_DETAILS_VIEW WHERE JOB_ID='ST_MAN' AND SALARY>7000;
その結果が表示されます。
STARTUP options | upgrade_options
optionsの構文は、次のとおりです。
[FORCE] [RESTRICT] [PFILE=filename] [QUIET] [ MOUNT [dbname] |
[ OPEN [open_options] [dbname] ] | NOMOUNT ]
open_optionsの構文は次のとおりです。
READ {ONLY | WRITE [RECOVER]} | RECOVER
upgrade_optionsの構文は、次のとおりです。
[PFILE=filename] {UPGRADE | DOWNGRADE} [QUIET]
データベースのマウントおよびオープンを含む様々なオプションを付けて、Oracleデータベース・インスタンスを起動します。
FORCE
再起動する前に、現行のOracleデータベース・インスタンス(実行されている場合)をABORTモードのSHUTDOWNで停止しておく必要があります。現行のインスタンスが実行されている、およびFORCEが指定されていない場合は、エラーになります。FORCEは、デバッグ中および異常な環境下で有効となります。通常は、使用しないでください。
RESTRICT
データベースに接続できるのは、RESTRICTED SESSIONのシステム権限があるOracleデータベース・ユーザーのみです。制限されたセッション機能を使用禁止にするには、ALTER SYSTEMコマンドを使用します。
PFILE=filename
インスタンスの起動中に使用されるのは、指定したパラメータ・ファイルになります。PFILEの指定を省略すると、デフォルトのSTARTUPパラメータ・ファイルが使用されます。使用されるデフォルトのファイルは、プラットフォーム固有です。たとえば、デフォルトのファイルは、UNIXでは$ORACLE_HOME/dbs/init$ORACLE_SID.oraで、Windowsでは%ORACLE_HOME%¥database¥initORCL.oraです。
QUIET
インスタンスを起動する際、システム・グローバル領域の情報を非表示にします。
MOUNT dbname
データベースをオープンしないで、マウントします。
dbnameには、マウントまたはオープンするデータベースの名前を指定します。データベース名を指定しない場合、初期化パラメータDB_NAMEのデータベース名が使用されます。
OPEN
指定されたデータベースを、マウントおよびオープンします。
NOMOUNT
インスタンスの起動によって、データベースがマウントされなくなります。
MOUNTまたはOPENと同時には指定できません。
RECOVER
インスタンスを起動する前に、必要に応じてメディア・リカバリを実行するように指定します。STARTUP RECOVERは、RECOVER DATABASEコマンドの実行、およびインスタンスの起動と同じ結果になります。完全リカバリが可能なのは、RECOVERオプションのみです。
必要に応じて、AUTORECOVERYが使用可能かどうかにかかわらず、AUTORECOVERYにONが設定されているものとしてリカバリを続行します。REDOログ・ファイルが予想した位置に見つからない場合、AUTORECOVERYが使用禁止であるとみなして、リカバリが続行されます。適用する必要がある、次のログ・ファイルの提案された位置および名前がプロンプトに表示されます。
UPGRADE
OPEN UPGRADEモードでデータベースを起動し、システム初期化パラメータに、データベースのアップグレード・スクリプトを実行可能にするために必要な特定の値を設定します。UPGRADEはOracleデータベース・サーバーの新しいバージョンを使用して、初めてデータベースを起動するときにのみ使用されます。
データベース・リリースのアップグレードの準備、テストおよび実装の詳細は、『Oracle Databaseアップグレード・ガイド』を参照してください。
アップグレード・スクリプトを実行すると、インストール済のOracleデータベースを新しいバージョンに変換します。たとえば、Oracle9iデータベースをOracle Database 10gにアップグレードします。アップグレードが完了したら、データベースを停止し、通常どおり再起動する必要があります。
DOWNGRADE
OPEN DOWNGRADEモードでデータベースを起動し、システム初期化パラメータに、データベースのダウングレード・スクリプトを実行可能にするために必要な特定の値を設定します。
データベース・リリースのダウングレードの準備、テストおよび実装の詳細は、『Oracle Databaseアップグレード・ガイド』を参照してください。
ダウングレード・スクリプトを実行すると、インストール済のOracleデータベースを、以前のバージョンに変換します。たとえば、Oracle Database 10gをOracle9iデータベースにダウングレードします。ダウングレードが完了したら、データベースを停止し、通常どおり再起動する必要があります。
SYSOPERまたはSYSDBAでデータベースに接続している必要があります。ディスパッチャを経由して共有サーバーには接続できません。
引数なしのSTARTUPは、STARTUP OPENと同じ動作をします。
STARTUP OPEN RECOVERは、リカバリが失敗したときもデータベースをマウントおよびオープンします。
標準パラメータ・ファイルを使用してインスタンスを起動し、デフォルトのデータベースをマウントして、オープンするには、次のように入力します。
STARTUP
または、次のように入力します。
STARTUP OPEN database
標準パラメータ・ファイルを使用してインスタンスを起動し、デフォルトのデータベースをマウントして、オープンするには、次のように入力します。
STARTUP FORCE RESTRICT MOUNT
データベースをマウントしないで、パラメータ・ファイルTESTPARMを使用してインスタンスを起動するには、次のように入力します。
STARTUP PFILE=testparm NOMOUNT
現在稼働中のインスタンスを強制終了し、パラメータ・ファイルmyinit.oraを使用して再起動後にデータベースをオープンします。データベースへの接続は、RESTRICTED SESSION権限を持つユーザーのみが可能です。次のように入力します。
STARTUP FORCE RESTRICT PFILE=myinit.ora OPEN database
インスタンスを起動して、データベースをオープンしないでマウントするには、次のように入力します。
CONNECT / as SYSDBA
Connected to an idle instance. |
STARTUP MOUNT
ORACLE instance started. |
iSQL*Plusでは使用できません。
STORE SET file_name[.ext] [ CRE[ATE | REP[LACE] | APP[END]]
現行のSQL*Plus環境の属性をスクリプトに保存します。
STOREコマンド構文の項および句については、「SAVE」コマンドを参照してください。
SET
システム変数の値が保存されます。
このコマンドを実行すると、「START」コマンド、「@(アットマーク)」コマンドまたは「@@(二重アットマーク)」コマンドを使用して実行できるスクリプトが作成されます。
STOREコマンド句(CREATE、REPLACEまたはAPPEND)と同じ名前でファイルを保存するには、名前を一重引用符で囲むか、またはファイル拡張子を指定する必要があります。
現行のSQL*Plusシステム変数を、名前がDEFAULTENVでデフォルトのコマンド・ファイル拡張子が付いたファイルに格納するには、次のように入力します。
STORE SET DEFAULTENV
現行のSQL*Plusシステム変数を、名前がDEFAULTENVで拡張子がOLDの既存ファイルに追加するには、次のように入力します。
STORE SET DEFAULTENV.OLD APPEND
TIMI[NG] [START text | SHOW | STOP]
経過時間に関するタイミング・データの記録、現行のタイマーの名前とタイミング・データの表示、またはアクティブなタイマー数の表示を行います。
START text
タイマーが設定され、textがタイマーの名前になります。最初のタイマーを停止する前に追加のタイマーを起動することによって、複数のアクティブ・タイマーを同時に使用できます。SQL*Plusは、それぞれの新規タイマーをその前のタイマーにネストします。最後に起動したタイマーが現行のタイマーになります。
SHOW
現行のタイマー名およびタイミング・データが表示されます。
STOP
現行のタイマー名および計時データが表示されてから、そのタイマーが削除されます。他にアクティブになっているタイマーがあれば、削除されたタイマーの次に起動されたタイマーが現行のタイマーになります。
アクティブ・タイマーの数を表示するには、句を指定しないでTIMINGのみを入力します。TIMINGについては、SET AUTOTRACEも参照してください。
このデータを使用して、特定の期間中に実行されるコマンドまたはブロックに関するパフォーマンスを分析できます。
各SQLコマンドまたはPL/SQLブロックを実行した後、自動的にTIMINGのデータを表示する場合の詳細は、SET TIMINGコマンドを参照してください。
すべてのタイマーを削除するには、CLEAR TIMINGコマンドを使用します。
SQL_TIMERという名前のタイマーを作成するには、次のように入力します。
TIMING START SQL_TIMER
現行のタイマーのタイトルおよび累積時間を表示するには、次のように入力します。
TIMING SHOW
現行のタイマーのタイトルおよび累積時間を表示して、そのタイマーを削除するには、次のように入力します。
TIMING STOP
TTI[TLE] [printspec [text | variable] ...] [ON | OFF]
printspecには、テキストの配置および書式設定に使用される次の句のうちの1つ以上を指定します。
BOLD
CE[NTER]
COL n
FORMAT text
LE[FT]
R[IGHT]
S[KIP] [n]
TAB n
指定したタイトルを各レポート・ページの上部に配置して書式設定します。TTITLEの現行の定義を表示するには、句を指定しないでTTITLEのみを入力します。TTITLEコマンドの後に引用符で囲まれた単一の語または文字列のみを指定した場合は、旧形式のTTITLEが使用されます。
旧形式のTTITLEの詳細は、「TTI[TLE] text(旧形式は廃止)」を参照してください。
これらの項および句は、BTITLEコマンドにも適用されます。
text
タイトル・テキストを指定します。1行に2つ以上の語を入れるには、テキストを一重引用符で囲んで入力します。
variable
置換変数、または次のシステム管理値のいずれかを指定します。SQL.LNO(カレント行の番号)、SQL.PNO(現行のページ番号)、SQL.RELEASE(現行のOracleデータベースのリリース番号)、SQL.SQLCODE(現行のエラー・コード)またはSQL.USER(現行のユーザー名)。
これらの値の1つを出力するには、適切な変数をタイトルの中で参照します。FORMAT句でvariableの形式を設定できます。
SQL*Plusの置換変数(& variables)は、TTITLEの実行前に展開されます。生成された文字列はTTITLEテキストとして格納されます。後続の各結果ページの生成中に予期しない結果が発生して、展開された変数の値自身が置換変数として解釈される場合があります。
TTITLEコマンドでのこの二重置換を回避するには、各結果ページで置換される変数に&接頭辞を使用しないでください。置換変数を使用してTTITLEに未変更のテキストを挿入する場合は、1回のみ置換されるようにテキストを引用符で囲みます。
OFF
定義に影響を与えないで、タイトルをオフ(非表示)にします。
ON
タイトルをオン(表示)にします。上部タイトルを定義すると、SQL*Plusは自動的にTTITLEをONに設定します。
COL n
カレント行の列nまでインデントします(列nを過ぎている場合は、後退します)。ここでいう「列」とは、印刷位置のことで、表の列ではありません。
S[KIP] [n]
新規行の先頭までn回スキップします。nを省略すると、1回スキップします。nに0を入力すると、カレント行の先頭まで戻ります。
TAB n
n列分前方に(nに負の値を入力した場合は後方に)スキップします。ここでいう「列」とは、印刷位置のことで、表の列ではありません。
LE[FT] | CE[NTER] | R[IGHT]
カレント行のデータを、それぞれ左揃え、中央揃えおよび右揃えにします。SQL*Plusは、printspecの終わりまで、あるいは次のLEFT、CENTER、RIGHTまたはCOLコマンドまでのデータ項目を、1グループとして整列させます。CENTERおよびRIGHTでは、SET LINESIZE値を使用し、後続のデータ項目の位置が計算されます。
BOLD
データを太字で印刷します。SQL*Plusは、端末上で同じデータを3回続けて出力することによって、太字印刷を行います。一部のオペレーティング・システムでは、SQL*Plusがプリンタにテキストを太字でなく3回連続で印刷するように指示することがあります。
FORMAT text
次のFORMAT句まで、またはこのコマンドの終わりまでの、後続のデータ項目の書式を決定する書式モデルを指定します。書式モデルは、A10や$999などのテキスト定数である必要があります。書式設定および有効な書式モデルの詳細は、「COLUMN」コマンドを参照してください。
書式モデルのデータ型が、指定したデータ項目のデータ型と一致しない場合、FORMAT句はその項目には影響しません。
指定したデータ項目の前に適切な書式モデルがない場合、SQL*Plusは、SET NUMFORMATで指定された書式を使用して、NUMBER値を出力します。また、SET NUMFORMATが指定されていない場合はデフォルトの書式を使用して、NUMBER値を出力します。SQL*Plusは、デフォルトの書式に従ってDATE値を出力します。
現行のTTITLE定義を表示するには、句を指定しないでTTITLEのみを入力します。
テキストの前にprintspec句を入力しない場合は左揃えになります。コマンド名の直後に有効なprintspec句(LEFT、SKIP、COLなど)が続いている場合、SQL*Plusは新形式でTTITLEを解釈します。
上部タイトルの列およびDATE値の出力については、「COLUMN」コマンドを参照してください。
printspecには、定数および変数をいくつでも指定できます。SQL*Plusは、それらを指定した順序で表示し、それぞれの定数または変数をその直前のprintspec句で指定されている位置および書式に設定します。
TTITLEに指定するタイトルの長さは、2400文字を超えないようにしてください。
一重引用符で囲まれたタイトル・テキスト文字列の内部では、継続文字(ハイフン)は認識されません。これを認識させるには、次のように、継続文字を引用符の外側に置く必要があります。
TTITLE CENTER 'Summary Report for' - > 'the Month of May'
「Monthly Analysis」を上部タイトルとして定義して左揃え、日付を中央揃え、ページ番号を3桁書式で右揃え、次の行の中央に「Data in Thousands」を表示するには、次のように入力します。
TTITLE LEFT 'Monthly Analysis' CENTER '01 Jan 2003' - RIGHT 'Page:' FORMAT 999 SQL.PNO SKIP CENTER - 'Data in Thousands'
Monthly Analysis 01 Jan 2003 Page: 1 |
上部タイトルの定義を変更しないで非表示にするには、次のように入力します。
TTITLE OFF
UNDEF[INE] variable ...
variableには、定義を参照する置換変数の名前を指定します。
明示的に(DEFINEコマンドを使用して)定義したか、または暗黙的に(STARTコマンドでの引数を使用して)定義した1つ以上の置換変数を削除します。
POSという名前の置換変数の定義を削除するには、次のように入力します。
UNDEFINE POS
MYVAR1およびMYVAR2という名前の2つの置換変数の定義を削除するには、次のように入力します。
UNDEFINE MYVAR1 MYVAR2
VAR[IABLE] [variable [type] ]
typeは、次のいずれかを表します。
NUMBER
CHAR
CHAR (n [CHAR | BYTE])
NCHAR
NCHAR (n)
VARCHAR2 (n [CHAR | BYTE])
NVARCHAR2 (n)
CLOB
NCLOB
REFCURSOR
BINARY_FLOAT
BINARY_DOUBLE
PL/SQLで参照できるバインド変数を宣言します。
引数なしでVARIABLEを指定すると、セッション内で宣言されているすべての変数が表示されます。VARIABLEの後に変数名のみを指定すると、その変数が表示されます。
CLOBおよびNCLOBバインド変数を使用してリソースを解放するには、次のように入力して、手動で一時LOBを解放する必要があります。
EXECUTE DBMS_LOB.FREETEMPORARY(:cv)
バインド変数の詳細は、「バインド変数の使用方法」を参照してください。PL/SQLの詳細は、『Oracle Database PL/SQLユーザーズ・ガイドおよびリファレンス』を参照してください。
variable
作成するバインド変数の名前を指定します。
NUMBER
NUMBER型で固定長の変数が作成されます。
CHAR
CHAR(文字)型で長さ1の変数が作成されます。
CHAR (n[CHAR | BYTE])
CHAR型で長さがnバイトまたはn文字の変数が作成されます。nの最大値は2000バイトで、最小値は1バイトまたは1文字です。キャラクタ・セマンティクスを持つCHAR変数の最大値nは、選択したキャラクタ・セットで各文字を格納するために必要なバイト数で決定されますが、最大2000バイトです。長さセマンティクスは、長さ修飾子CHARまたはBYTEで決定されます。明示的に記述しない場合は、環境変数NLS_LENGTH_SEMANTICSがバインド変数に適用されます。変数定義の段階で長さセマンティクスを明示的に記述すると、NLS_LENGTH_SEMANTICS設定より優先されます。
NCHAR
NCHAR(各国語キャラクタ)型で長さ1の変数が作成されます。
NCHAR (n)
NCHAR型で長さがn文字の変数が作成されます。nの最大値は、選択したキャラクタ・セットで各文字を格納するために必要なバイト数で決定されますが、最大2000バイトです。SQL*PlusセッションがOracle8i以下のサーバーに接続している場合、またはSQLPLUSCOMPATIBILITYシステム変数が9.0.0未満に設定されている場合は例外となります。この場合、長さnは、選択した各国語キャラクタ・セットによってバイト単位または文字単位になりますが、いずれの場合も最大値は2000バイトです。
VARCHAR2 (n[CHAR | BYTE])
VARCHAR2型で長さがnバイトまたはn文字までの変数が作成されます。nの最大値は4000バイトで、最小値は1バイトまたは1文字です。キャラクタ・セマンティクスを持つVARCHAR2変数nの最大値は、選択したキャラクタ・セットで各文字を格納するために必要なバイト数で決定されますが、最大4000バイトです。長さセマンティクスは、長さ修飾子CHARまたはBYTEで決定されます。明示的に記述しない場合は、環境変数NLS_LENGTH_SEMANTICSがバインド変数に適用されます。変数定義の段階で長さセマンティクスを明示的に記述すると、NLS_LENGTH_SEMANTICS設定より優先されます。
NVARCHAR2 (n)
NVARCHAR2型で長さがn文字までの変数が作成されます。nの最大値は、選択したキャラクタ・セットで各文字を格納するために必要なバイト数で決定されますが、最大4000バイトです。SQL*PlusセッションがOracle8i以下のサーバーに接続している場合、またはSQLPLUSCOMPATIBILITYシステム変数が9.0.0未満に設定されている場合は例外となります。この場合、長さnは、選択した各国語キャラクタ・セットによってバイト単位または文字単位になりますが、いずれの場合も最大値は4000バイトです。
CLOB
CLOB型の変数が作成されます。
NCLOB
NCLOB型の変数が作成されます。
REFCURSOR
REF CURSOR型の変数が作成されます。
BINARY_FLOAT
BINARY_FLOAT型の変数が作成されます。BINARY_FLOATは、米国電気電子技術者協会(IEEE)の2進浮動小数点演算についてのIEEE規格(IEEE規格754-1985)に実質的に準拠する浮動小数点数です。
BINARY_DOUBLE
BINARY_DOUBLE型の変数が作成されます。BINARY_DOUBLEは、米国電気電子技術者協会(IEEE)の2進浮動小数点演算についてのIEEE規格(IEEE規格754-1985)に実質的に準拠する浮動小数点数です。
バインド変数は、ストアド・プロシージャに対するパラメータとして使用されます。また、無名PL/SQLブロックの中で直接参照できます。
VARIABLEで作成したバインド変数の値を表示するには、PRINTコマンドを使用します。詳細は、「PRINT」を参照してください。
VARIABLEで作成したバインド変数の値を自動的に表示するには、SET AUTOPRINTコマンドを使用します。詳細は、「SET AUTOP[RINT] {ON | OFF}」コマンドを参照してください。
バインド変数は、PL/SQLブロックに入れる場合を除いて、COPYコマンドまたはSQL文の中で使用できません。かわりに、置換変数を使用します。
VARIABLE ...CLOBまたはNCLOBコマンドを実行すると、SQL*Plusは、LOBロケータをバインド変数に対応付けます。PL/SQLブロック内のSELECT clob_column INTO :cv文を実行すると、LOBロケータには自動的にデータが挿入されます。SQL*Plusを終了すると、SQL*PlusはLOBロケータをクローズします。
CLOBおよびNCLOBバインド変数を使用してリソースを解放するには、次のように入力して、手動で一時LOBを解放する必要があります。
EXECUTE DBMS_LOB.FREETEMPORARY(:cv)
すべての一時LOBは、SQL*Plusの終了時に解放されます。
CLOBまたはNCLOBバインド変数を出力するときに、SQL*PlusのSETコマンド(SET LONG、SET LONGCHUNKSIZE、SET LOBOFFSETなど)を使用して、バッファのサイズを制御できます。
SQL*PlusのREFCURSORのバインド変数を使用すると、PL/SQL 2.3以上のカーソル変数を参照できます。また、PL/SQL出力をSQL*Plusで書式設定できます。PL/SQLカーソル変数の詳細は、『Oracle Database PL/SQLユーザーズ・ガイドおよびリファレンス』を参照してください。
VARIABLE...REFCURSORコマンドを実行する場合、SQL*Plusはカーソル・バインド変数を作成します。PL/SQLブロック内のバインド変数を参照するOPEN ...FOR SELECT文によって、カーソルが自動的にオープンされます。SQL*Plusは、バインド変数用のPRINT文の処理が完了した後、または終了時に、カーソルをクローズします。
SQL*Plusの書式設定コマンド(BREAK、COLUMN、COMPUTE、SETなど)を使用して、REFCURSORの印刷出力を書式設定できます。
REFCURSORバインド変数を2回以上印刷するには、PL/SQL OPEN ... FOR文を再実行する必要があります。
次の例では、バインド変数を作成し、その値を変更して、現在の値を表示する方法を示します。
バインド変数を作成するには、次のように入力します。
VARIABLE ret_val NUMBER
SQL*Plusでこのバインド変数を変更するには、PL/SQLブロックを使用する必要があります。
BEGIN :ret_val:=4; END; /
PL/SQL procedure successfully completed. |
SQL*Plusのバインド変数の値を表示するには、次のように入力します。
PRINT ret_val
RET_VAL |
次の例では、バインド変数を作成し、その変数を関数から戻される値に設定する方法を示します。
VARIABLE id NUMBER BEGIN :id := EMP_MANAGEMENT.HIRE ('BLAKE','MANAGER','KING',2990,'SALES'); END; /
ストアド・プロシージャから戻された値がバインド変数:idに設定されています。この変数は、PRINTコマンドを使用して表示したり、後続のPL/SQLサブプログラムで使用できます。
次の例では、バインド変数を自動的に表示する方法を示します。
SET AUTOPRINT ON VARIABLE a REFCURSOR BEGIN OPEN :a FOR SELECT LAST_NAME, CITY, DEPARTMENT_ID FROM EMP_DETAILS_VIEW WHERE SALARY > 12000 ORDER BY DEPARTMENT_ID; END; /
前述の例では、変数を表示するためにPRINTコマンドを実行する必要はありません。
次の例では、いくつかの変数を作成します。
VARIABLE id NUMBER VARIABLE txt CHAR (20) VARIABLE myvar REFCURSOR
定義済変数を表示するには、引数を指定せずにVARIABLEを入力します。
VARIABLE
variable id |
次の例では、1つの変数を表示します。
VARIABLE txt
variable txt |
次の例では、個人別に給与を表示し、1か月の給与が$12,000を超える従業員の部門別の給与を計算するレポートを作成する方法を示します。
VARIABLE rc REFCURSOR BEGIN OPEN :rc FOR SELECT DEPARTMENT_NAME, LAST_NAME, SALARY FROM EMP_DETAILS_VIEW WHERE SALARY > 12000 ORDER BY DEPARTMENT_NAME, LAST_NAME; END; /
PL/SQL procedure successfully completed. |
SET PAGESIZE 100 FEEDBACK OFF TTITLE LEFT '*** Departmental Salary Bill ***' SKIP 2 COLUMN SALARY FORMAT $999,990.99 HEADING 'Salary' COLUMN DEPARTMENT_NAME HEADING 'Department' COLUMN LAST_NAME HEADING 'Employee' COMPUTE SUM LABEL 'Subtotal:' OF SALARY ON DEPARTMENT_NAME COMPUTE SUM LABEL 'Total:' OF SALARY ON REPORT BREAK ON DEPARTMENT_NAME SKIP 1 ON REPORT SKIP 1 PRINT rc
次の例では、CLOB列を含むレポートを作成し、SET LOBOFFSETコマンドを使用してそのレポートを表示する方法を示します。
CLOB型のclob_colという名前の列を含むclob_tabという名前の表を、すでに作成してあるとします。clob_colには、次のデータが含まれています。
Remember to run the Departmental Salary Bill report each month. This report contains confidential information.
col_clob列にデータを表示するレポートを作成するには、次のように入力します。
VARIABLE T CLOB BEGIN SELECT CLOB_COL INTO :T FROM CLOB_TAB; END; /
PL/SQL PROCEDURE SUCCESSFULLY COMPLETED |
clob_col列から200文字を出力するには、次のように入力します。
SET LINESIZE 70 SET LONG 200 PRINT T
T |
出力位置を21番目の文字に設定するには、次のように入力します。
SET LOBOFFSET 21 PRINT T
T |
CLOB列の作成については、『Oracle Database SQLリファレンス』を参照してください。
WHENEVER OSERROR {EXIT [SUCCESS | FAILURE | n | variable | :BindVariable]
[COMMIT | ROLLBACK] | CONTINUE [COMMIT | ROLLBACK | NONE]}
オペレーティング・システムのエラー(ファイル書込みエラーなど)が発生した場合に、指定した操作(デフォルトはSQL*Plusを終了)を実行します。
iSQL*Plusでは、オペレーティング・システム・エラーが発生した場合、指定した操作(デフォルトでは現行のスクリプトを停止)を実行し、フォーカスを作業領域に戻します。
[SUCCESS | FAILURE | n | variable | :BindVariable]
オペレーティング・システムのエラーが検出されたら、すぐに指定した処理を実行するように、SQL*Plusに指示します。成功または失敗を示すコード、オペレーティング・システム障害コード、またはユーザー指定の数値や変数をSQL*Plusが戻すように指定することもできます。
EXIT [SUCCESS | FAILURE | n | variable | :BindVariable]
オペレーティング・システムのエラーが検出されたらすぐに終了するように、SQL*Plusに指示します。成功または失敗を示すコード、オペレーティング・システム障害コード、またはユーザー指定の数値や変数をSQL*Plusが戻すように指定することもできます。詳細は、「EXIT」を参照してください。
CONTINUE
EXITオプションをオフにします。
COMMIT
終了または継続する前にCOMMITを実行し、データベースに対する保留中の変更を保存するようにSQL*Plusに指示します。
ROLLBACK
終了または継続する前にROLLBACKを実行し、データベースに対する保留中の変更を破棄するようにSQL*Plusに指示します。
NONE
継続する前に何の操作もしないようにSQL*Plusに指示します。
WHENEVER OSERRORコマンドを入力しない場合、SQL*Plusのデフォルト動作では、オペレーティング・システムのエラーが発生すると、何も処置せずに処理が続行されます。
WHENEVER SQLERRORコマンドを入力しない場合、SQL*Plusのデフォルト動作では、SQL*Plusのエラーが発生すると、何も処置せずに処理が続行されます。
出力ファイルからの読取り時に障害が発生した場合、次のスクリプト内のコマンドは、iSQL*Plusの現行のスクリプトの処理を中止して、作業領域の入力領域にフォーカスを戻すか、またはSQL*Plusを終了し、保留中の変更があればすべてコミットします。
WHENEVER OSERROR EXIT START no_such_file
OS Message: No such file or directory |
WHENEVER SQLERROR {EXIT [SUCCESS | FAILURE | WARNING | n | variable
| :BindVariable] [COMMIT | ROLLBACK] | CONTINUE [COMMIT | ROLLBACK | NONE]}
SQLコマンドまたはPL/SQLブロックでエラーが発生した場合に、指定した操作(デフォルトはSQL*Plusを終了)を実行します。
iSQL*Plusでは、SQLコマンドまたはPL/SQLブロックでエラーが発生した場合、指定した操作(デフォルトでは現行のスクリプトを停止)を実行し、フォーカスを作業領域に戻します。
[SUCCESS | FAILURE | WARNING | n | variable | :BindVariable]
SQLコマンドまたはPL/SQLブロックでエラーが検出されたら、すぐに(ただし、エラー・メッセージを出力した後で)指定した操作を実行するようにSQL*Plusに指示します。SQL*Plusエラーの場合は、SQL*Plusは終了しません。
EXIT [SUCCESS | FAILURE | WARNING | n | variable | :BindVariable]
SQLコマンドまたはPL/SQLブロックでエラーが検出されたらすぐに(ただし、エラー・メッセージを出力した後で)終了するように、SQL*Plusに指示します。SQL*Plusエラーの場合は、SQL*Plusは終了しません。WHENEVER SQLERRORのEXIT句は、EXITコマンドと同じ構文規則に従います。詳細は、「EXIT」コマンドを参照してください。
CONTINUE
EXITオプションをオフにします。
COMMIT
終了または継続する前にCOMMITを実行し、データベースに対する保留中の変更を保存するようにSQL*Plusに指示します。
ROLLBACK
終了または継続する前にROLLBACKを実行し、データベースに対する保留中の変更を破棄するようにSQL*Plusに指示します。
NONE
継続する前に何の操作もしないようにSQL*Plusに指示します。
WHENEVER SQLERRORコマンドは、SQLコマンドまたはPL/SQLブロックのエラーによってトリガーされます。SQL*Plusコマンド・エラーではトリガーされません。
SQL UPDATEコマンドが失敗すると、次のスクリプト内のコマンドは、iSQL*Plusの現行のスクリプトの処理を中止して、作業領域の入力領域にフォーカスを戻します。
次のスクリプト中のコマンドは、SQL UPDATEコマンドが失敗すると、SQL*Plusが終了し、SQLエラー・コードを戻します。
WHENEVER SQLERROR EXIT SQL.SQLCODE UPDATE EMP_DETAILS_VIEW SET SALARY = SALARY*1.1;
SELECTコマンドが失敗すると、
次のSQLコマンド・エラーのため、iSQL*Plusは現行のスクリプトの処理を中止し、作業領域の入力領域にフォーカスを戻します。
WHENEVER SQLERROR EXIT SQL.SQLCODE select column_does_not_exiSt from dual;
select column_does_not_exist from dual |
次の例は、SQL*Plusコマンドでエラーが発生した後は、WHENEVER SQLERRORコマンドは実行されませんが、SQLコマンドまたはPL/SQLブロックでエラーが発生した場合は、実行されることを示します。
WHENEVER SQLERROR EXIT SQL.SQLCODE column LAST_name headIing "Employee Name"
Unknown COLUMN option "headiing" |
次のPL/SQLブロック・エラーの場合、SQL*Plusが終了し、SQLエラー・コードが戻ります。
WHENEVER SQLERROR EXIT SQL.SQLCODE begin SELECT COLUMN_DOES_NOT_EXIST FROM DUAL; END; /
XQUERY xquery_statement
SQL*Plus XQUERYコマンドを使用すると、指定したデータベースでXQuery 1.0問合せを実行できます。XQUERYは、Oracle Database 10gリリース2以上のバージョンでサポートされています。それより前のOracleデータベースでXQUERYを使用しようとすると、エラーが発生します。
SP2-614 Server version too low
xquery_statement
実行するXQUERY文を指定します。この文は、標準のXQuery構文で入力します。XQUERY文は、スラッシュ「/」で終了します。
SQL*PlusコマンドXQUERYをXQuery文の接頭辞として設定し、スラッシュ「/」でXQUERYコマンドを終了します。XQUERYは、SQL*Plusキーワードです。XQueriesを他のツールで実行する場合は、キーワードが必要ない場合があります。
XQUERYコマンドのXML出力は、アクティブなSETコマンド・オプションに従ってネイティブXMLとして表示されます。通常、SET LONGを設定する必要があります。次の設定を行うと有効な場合があります。
XQUERYコマンドには、アクティブなデータベース接続が必要です。このコマンドは、SQLPLUS /NOLOGでは動作しません。
XQUERYコマンドでは、バインド変数はサポートされていません。
サイト・プロファイルglogin.sqlには、XQuery出力の列ヘッダーを定義する次のCOLUMNコマンドが含まれています。
COLUMN column_value HEADING 'Result Sequence'
COLUMN定義を変更して、必要なヘッダーを定義できます。
XQUERYコマンドには固有の4つのiSQL*Plusプリファレンス(SETコマンド)があります。SHOW XQUERYコマンドを実行すると、これらの設定の状態が表示されます。次に、これらのコマンドを示します。
| スクリプト実行iSQL*Plusプリファレンス | 同等のSETコマンド |
|---|---|
|
XQueryのベースURI |
SET XQUERY BASEURI |
|
XQueryの順序付け |
SET XQUERY ORDERING |
|
XQUERYのノード識別 |
SET XQUERY NODE |
|
XQueryのコンテキスト |
SET XQUERY CONTEXT |
SET XQUERYコマンドの詳細は、次の項を参照してください。
次のスクリプトのXQuery文は、HRスキーマのEMP_DETAILS_VIEWビューを問い合せます。
set long 160 set linesize 160 xquery for $i in ora:view("EMP_DETAILS_VIEW") return $i /
|
![]() Copyright © 2005 Oracle Corporation. All Rights Reserved. |
|