ヘッダーをスキップ

SQL*Plus ユーザーズ・ガイドおよびリファレンス
10g リリース2(10.2)

B19277-01
目次
目次
索引
索引

戻る 次へ

12 SQL*Plusコマンド・リファレンス

この章では、SQL*Plusコマンドをアルファベット順に説明します。それぞれのコマンドについて、次の内容を説明します。

項目  説明 

構文 

コマンドの入力方法を示します。また、コマンドの基本的な使用方法を簡単に説明します。 

 

構文の中に含まれるそれぞれの項または句の働きについて説明します。 

使用方法 

コマンドの使用方法およびコマンドの働きに関する追加情報を示します。 

 

コマンドの例を示します。 

長いSQL*Plusコマンドは、行末にハイフン(-)を付けて[Return]を押すと、次の行に続けて入力できます。必要な場合は、ハイフンの前に空白も入力できます。右山カッコ(>)が次の行のプロンプトとして表示されます。

SQL*Plusコマンドは、必ずしもセミコロンで終了する必要はありません。コマンドの入力が終了したら、[Return]を押します。SQL*Plusコマンドの末尾にセミコロンを入力してもかまいません。


SQL*Plus コマンド一覧

コマンド  説明 

@(アットマーク) 

指定したスクリプトのSQL*Plus文を実行します。スクリプトは、ローカル・ファイル・システムまたはWebサーバーからコールされます。 

@@(二重アットマーク) 

スクリプトを実行します。このコマンドは、@(アットマーク)コマンドと同じです。スクリプトをコールしているパスと同じパス内を検索する追加機能があるため、ネストしたスクリプトの実行に便利です。 

/(スラッシュ) 

SQLコマンドまたはPL/SQLブロックを実行します。 

ACCEPT 

1行の入力を読み取り、所定の置換変数に格納します。 

*APPEND 

指定したテキストをバッファ内のカレント行の終わりに追加します。 

ARCHIVE LOG 

オンラインREDOログ・ファイルの自動アーカイブの開始または終了、指定したREDOログ・ファイルの手動による(明示的な)アーカイブ、あるいはREDOログ・ファイルの情報の表示を行います。 

ATTRIBUTE 

オブジェクト型列の特定の属性の表示特性を指定し、1つまたはすべての属性の現行の表示特性を表示します。 

BREAK 

レポート内で書式設定を変更する場合の場所と方法を指定したり、現行のブレーク定義を表示します。 

BTITLE 

各レポート・ページの下部に、指定したタイトルを配置して書式設定したり、現行のBTITLE定義を表示します。 

*CHANGE 

バッファ内のカレント行のテキストを変更します。 

CLEAR 

指定したオプション(たとえば、BREAKSやCOLUMNSなど)の現行の値または設定を、リセットまたは消去します。 

COLUMN 

特定の列の表示特性を指定したり、1つまたはすべての列の現行の表示特性を表示します。 

COMPUTE 

選択した行のサブセットについて、各種の標準計算方法を使用してサマリー行を計算して出力したり、すべてのCOMPUTE定義を表示します。 

CONNECT 

指定したユーザーでOracleデータベースに接続します。 

COPY 

問合せから、同じまたは別のデータベース内の表に結果をコピーします。 

DEFINE 

置換変数を指定して、その変数にCHAR値を割り当てたり、1つまたはすべての変数の値および変数型を表示します。 

*DEL 

バッファの1つ以上の行を削除します。 

DESCRIBE 

指定した表、ビューまたはシノニムの列定義を表示したり、指定したファンクションまたはプロシージャの仕様を表示します。 

DISCONNECT 

データベースに対する保留中の変更をコミットし、現行のユーザーをOracleデータベースからログオフします。ただし、SQL*Plusは終了しません。 

*EDIT 

指定したファイルの内容またはバッファの内容を対象として、オペレーティング・システムのテキスト・エディタを起動します。 

EXECUTE 

1つのPL/SQL文を実行します。 

EXIT 

SQL*Plusを終了し、オペレーティング・システムに制御を戻します。 

*GET 

オペレーティング・システム・ファイルをバッファにロードします。 

HELP 

SQL*Plusコマンドラインのヘルプにアクセスします。 

*HOST 

SQL*Plusを終了せずに、オペレーティング・システム・コマンドを実行します。 

*INPUT 

バッファ内のカレント行の後に、1つ以上の新しい行を追加します。 

LIST 

バッファ内の1つ以上の行を表示します。 

PASSWORD 

パスワードを入力デバイスにエコー表示せずに変更できるようにします。 

PAUSE 

指定したテキストを表示し、その後ユーザーが[Return]を押すまで待機します。 

PRINT 

バインド変数の現行の値を表示します。 

PROMPT 

指定したメッセージをユーザーの画面に送信します。 

EXIT 

SQL*Plusを終了し、オペレーティング・システムに制御を戻します。EXITと同じ機能です。 

RECOVER 

1つ以上の表領域、1つ以上のデータ・ファイル、またはデータベース全体に対してメディア・リカバリを実行します。 

REMARK 

スクリプト内でコメントを開始します。 

REPFOOTER 

各レポートの下部に、指定したレポート・フッターを配置して書式設定したり、現行のREPFOOTER定義を表示します。 

REPHEADER 

各レポートの上部に、指定したレポート・ヘッダーを配置して書式設定したり、現行のREPHEADER定義を表示します。 

RUN 

現在、バッファに格納されているSQLコマンドまたはPL/SQLブロックを表示し、実行します。 

*SAVE 

バッファの内容を、オペレーティング・システム・ファイル(スクリプト)に保存します。 

SET 

現行のセッションに対するSQL*Plus環境を変更するシステム変数を設定します。 

SHOW 

SQL*Plusシステム変数の値または現行のSQL*Plus環境を表示します。 

SHUTDOWN 

現在実行中のOracleデータベース・インスタンスを停止します。  

*SPOOL 

問合せの結果を、オペレーティング・システム・ファイルに格納し、必要に応じてそのファイルをプリンタに送信します。 

START 

指定したスクリプトのSQL*Plus文を実行します。スクリプトは、iSQL*PlusではWebサーバーから、SQL*Plusコマンドラインでは、ローカル・ファイル・システムまたはWebサーバーからコールされます。 

STARTUP 

Oracleデータベース・インスタンスを起動し、データベースをマウントおよびオープンします。 

*STORE 

現行のSQL*Plus環境の属性を、オペレーティング・システムのスクリプトに保存します。 

TIMING 

経過時間に関するタイミング・データの記録、現行のタイマーのタイトルとタイミング・データの表示、またはアクティブなタイマー数の表示を行います。 

TTITLE 

各レポート・ページの上部に、指定したタイトルを配置して書式設定したり、現行のTTITLE定義を表示します。 

UNDEFINE 

明示的に(DEFINEコマンドを使用して)定義したか、または暗黙的に(STARTコマンドでの引数を使用して)定義した1つ以上の置換変数を削除します。 

VARIABLE 

PL/SQLで参照できるバインド変数を宣言します。 

WHENEVER OSERROR 

オペレーティング・システム・コマンドによってエラーが発生した場合は、SQL*Plusを終了します。iSQL*Plusでオペレーティング・システム・コマンドによってエラーが発生した場合は、指定した操作を実行します。 

WHENEVER SQLERROR 

SQLコマンドまたはPL/SQLブロックによってエラーが発生した場合は、SQL*Plusを終了します。iSQL*PlusでSQLコマンドまたはPL/SQLブロックによってエラーが発生した場合は、SQL*Plusを終了します。 

XQUERY 

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
------------------------------ ----------------------------------------
Seattle United States of America
Oxford United Kingdom
Seattle United States of America
 


ACCEPT

構文

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:  '


APPEND

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

構文

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データベースのマニュアルを参照してください。


注意:

このコマンドを使用できるのは、現行のインスタンスのみです。Real Application Clusters内の異なるインスタンスまたはすべてのインスタンスに対してアーカイブを指定するには、SQLコマンドのALTER SYSTEMを使用します。SQLコマンドの使用方法については、『Oracle Database SQLリファレンス』を参照してください。 


アーカイバ・プロセスを起動し、LOG_ARCHIVE_DESTで指定したアーカイブ先を使用して自動アーカイブを開始するには、次のように入力します。

ARCHIVE LOG START

自動アーカイブを停止するには、次のように入力します。

ARCHIVE LOG STOP 

順序番号1001を使用して、指定した出力先へアーカイブ・ログ・ファイル・グループをアーカイブするには、次のように入力します。

ARCHIVE LOG 1001 '/vobs/oracle/dbs/arch' 

archは、出力先デバイス上のファイル名に接頭辞を指定します。残りのファイル名は、初期化パラメータLOG_ARCHIVE_FORMATによって、アーカイブREDOログ・ファイルのファイル名の書式を指定します。


ATTRIBUTE

構文

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

BREAK

構文

BRE[AK] [ON report_element [action [action]]] ...

report_elementの構文は、{column|expr|ROW|REPORT}です。

また、actionの構文は、[SKI[P] n|[SKI[P]] PAGE] [NODUP[LICATES]|DUP[LICATES]]です。

次に示すような、レポート内での変更位置および実行する書式設定のアクションを指定します。

現行の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;

DEPARTMENT_ID JOB_ID     LAST_NAME                     SALARY
------------- ---------- ------------------------- ----------
50 SH_CLERK Taylor 3200
SH_CLERK Fleaur 3100
.
.
.
SH_CLERK Gates 2900

DEPARTMENT_ID JOB_ID LAST_NAME SALARY
------------- ---------- ------------------------- ----------
50 SH_CLERK Perkins 2500
SH_CLERK Bell 4000
.
.
.
SH_CLERK Grant 2600
********** ----------
avg 3215

DEPARTMENT_ID JOB_ID LAST_NAME SALARY
------------- ---------- ------------------------- ----------

************* ----------
sum 64300

80 SA_MAN Russell 14000
SA_MAN Partners 13500
SA_MAN Errazuriz 12000
SA_MAN Cambrault 11000
SA_MAN Zlotkey 10500
********** ----------
avg 12200

DEPARTMENT_ID JOB_ID LAST_NAME SALARY
------------- ---------- ------------------------- ----------

************* ----------
sum 61000

25 rows selected.
 


BTITLE

構文

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'

CHANGE

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/
 


CLEAR

構文

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

COLUMN

構文

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にすると、それぞれのエンティティである「&lt;」、「&gt;」、「&quot;」および「&amp;」に置き換えられ、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列

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はアルファベットを表します。)列ヘッダーより短い幅を指定した場合は、ヘッダーが切り捨てられます。

DATE列

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コマンドを使用します。列ヘッダーより短い幅を指定した場合は、ヘッダーが切り捨てられます。

NUMBER列

数値列では、SET NUMFORMAT設定(SET NUMWIDTH設定より優先)よりCOLUMN FORMAT設定が優先されます。

SET NUMF[ORMAT] format」および「SET NUM[WIDTH] {10 | n}」を参照してください。

NUMBER列の幅を変更するには、FORMATの後に、表12-1「数値書式」に示す要素の1つを指定します。

表12-1    数値書式 
要素    説明 

,(カンマ) 

9,999
 

指定した位置にカンマが表示されます。 

. (ピリオド) 

99.99
 

数値の整数部と小数部を区切るピリオド(小数点)が表示されます。 

$9999
 

先行ドル記号が表示されます。 

0999
9990
 

先行0(ゼロ)が表示されます。
後続0(ゼロ)が表示されます。 

9999
 

9の数で指定した桁数の値が表示されます。値には、正の値の場合は先行空白、負の値の場合は先頭に先行マイナス記号が表示されます。先行0(ゼロ)には空白が表示されます。0(ゼロ)の値には0(ゼロ)が表示されます。 

B9999
 

書式モデル内の0(ゼロ)にかかわらず、整数部が0(ゼロ)の場合、固定小数点数の整数部に空白が表示されます。 

C999
 

指定した位置にISO通貨記号が表示されます。 

99D99
 

数値の整数部と小数部を区切る小数点文字が表示されます。 

EEEE 

9.999EEEE
 

値が科学表記法で表示されます。(書式には確実に4つの「E」を含める必要があります)。 

9G999
 

数値の整数部の指定した位置に桁グループ・セパレータが表示されます。 

L999
 

指定した位置に各国通貨記号が表示されます。 

MI 

9999MI
 

負の値の後に後続マイナス記号が表示されます。
正の値の後に後続空白が表示されます。 

PR 

9999PR
 

負の値は<山カッコ>で囲まれて表示されます。
正の値の場合は、先行空白および後続空白が表示されます。 

RN
rn 

RN
rn
 

大文字のローマ数字が表示されます。
小文字のローマ数字が表示されます。
値は1〜3999の整数です。 

S9999
9999S
 

先行マイナス記号またはプラス記号が表示されます。
後続マイナス記号またはプラス記号が表示されます。 

TM 

TM
 

小数点文字の最小の数が表示されます。デフォルトはTM9です。出力に使用される固定表記法の場合は最大64文字、科学表記法の場合は65文字以上です。TMの前に他の要素を指定することはできません。TMの後には単一の9またはEのみを指定できます。 

U9999
 

指定した位置に、第2通貨記号が表示されます。 

999V99
 

10nを掛けた値が表示されます。nは、「V」の後の「9」の数です。 

XXXX
xxxx
 

指定した桁数の四捨五入された値が16進数値で表示されます。 

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
---------- --------- -------- --------------------
123 25-AUG-2001 144 This order must be s
hipped by air freigh
t to ORD
 

WRAPをWORD_WRAPで置換した場合、REMARKSは次のようになります。

CUSTOMER     DATE        QUANTITY   REMARKS
---------- --------- -------- ---------------------
123 25-AUG-2001 144 This order must be
shipped by air freight
to ORD
 

TRUNCATEを指定した場合、REMARKSは次のようになります。

CUSTOMER     DATE        QUANTITY   REMARKS
---------- --------- -------- --------------------
123 25-AUG-2001 144 This order must be s
 

現在の日付および各職種の名前を上部タイトルに出力するには、次のように入力します。EMP_DETAILS_VIEWのかわりに、HRスキーマのEMPLOYEES表を使用します。

日付変数の作成方法の詳細は、「タイトル内に現在の日付を表示する方法」を参照してください。

2ページにわたるレポートは次のようになり、「Job Report」が現行サイズの行の中央に配置されています。

COLUMN JOB_ID NOPRINT NEW_VALUE JOBVAR
COLUMN TODAY NOPRINT NEW_VALUE DATEVAR
BREAK ON JOB_ID SKIP PAGE ON TODAY
TTITLE CENTER 'Job Report' RIGHT DATEVAR SKIP 2 -
LEFT 'Job: ' JOBVAR SKIP 2
SELECT TO_CHAR(SYSDATE, 'MM/DD/YYYY') TODAY,
LAST_NAME, JOB_ID, MANAGER_ID, HIRE_DATE, SALARY, DEPARTMENT_ID
FROM EMPLOYEES WHERE JOB_ID IN ('MK_MAN', 'SA_MAN')
ORDER BY JOB_ID, LAST_NAME;
 

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

Job: SA_MAN

HIRE_DATE
----------
1994-06-07
 

ALTER SESSIONコマンドの詳細は、『Oracle Database SQLリファレンス』を参照してください。


COMPUTE

構文

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の順序で実行されます。

表12-2    COMPUTE関数 
機能  計算  適用されるデータ型 
AVG
 

NULL以外の値の平均 

NUMBER 

COU[NT]
 

NULL以外の値の数 

すべての型 

MIN[IMUM]
 

最小値 

NUMBER、CHAR、NCHAR、VARCHAR2(VARCHAR)、NVARCHAR2(NCHAR VARYING) 

MAX[IMUM]
 

最大値 

NUMBER、CHAR、NCHAR、VARCHAR2(VARCHAR)、NVARCHAR2(NCHAR VARYING) 

NUM[BER]
 

行の数 

すべての型 

SUM
 

NULL以外の値の合計 

NUMBER 

STD
 

NULL以外の値の標準偏差 

NUMBER 

VAR[IANCE]
 

NULL以外の値の平方偏差 

NUMBER 

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;

JOB_ID     LAST_NAME                     SALARY
---------- ------------------------- ----------
AC_MGR Higgins 12000
********** ----------
TOTAL 12000
SA_MAN Zlotkey 10500
Cambrault 11000
Errazuriz 12000
Partners 13500
Russell 14000
********** ----------
TOTAL 61000

6 rows selected.
 

レポート上の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
--- ---------- -----------
13000 201
13500 146
14000 145
17000 101
17000 102
24000 100
----------
sum 98500

6 rows selected.
 

管理部門および経理部門の中での給与の平均と最高額を計算するには、次のように入力します。

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;

DEPARTMENT_NAME                LAST_NAME                     SALARY
------------------------------ ------------------------- ----------
Accounting Higgins 12000
Gietz 8300
****************************** ----------
Dept Average 10150
Dept Maximum 12000

Executive King 24000
Kochhar 17000
De Haan 17000
****************************** ----------
Dept Average 19333.3333
Dept Maximum 24000
 

部門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
------------- ------------------------- ----------
10 Whalen 4400
----------
4400

20 Hartstein 13000
20 Fay 6000
----------
19000
 

計算ラベルを出力せずに、レポートの終わりに給与合計額が表示されるようにするには、次のように入力します。

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;

DEPARTMENT_ID LAST_NAME                     SALARY
------------- ------------------------- ----------
10 Whalen 4400
20 Hartstein 13000
20 Fay 6000
30 Raphaely 11000
30 Khoo 3100
30 Baida 2900
30 Tobias 2800
30 Himuro 2600
30 Colmenares 2500
----------
48300

9 rows selected.
 


CONNECT

構文

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]


注意:

proxyの構文でusernameを囲んでいる大カッコは、オプションの項を示しているのではなく、構文に必要です。たとえば、プロキシ・ユーザーhrを介してパスワードwelcome1scottに接続するには、次のように入力します。

CONNECT hr[scott]/welcome1

 

指定したユーザー名で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

COPYコマンドでは、Oracle8i以上に導入されたデータ型または機能を処理するための機能拡張は行われていません。COPYコマンドは、将来のリリースでは廃止される予定です。

COPYコマンドの詳細および構文については、付録B「SQL*PlusのCOPYコマンド」を参照してください。


DEFINE

構文

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のインストール中に定義されます。これらの変数とユーザー定義変数の違いは、事前定義値を持つ点のみです。

表12-3    SQL*Plusのインストール時に定義される変数 
変数名  含まれる値 

_CONNECT_IDENTIFIER 

可能な宛先への接続に使用される接続識別子。 

_DATE 

現在の日付、またはユーザー定義の固定文字列。 

_EDITOR 

EDITコマンドで使用されるエディタを指定します。 

_O_VERSION 

インストールされたOracleデータベースの現行のバージョン。 

_O_RELEASE 

インストールされたOracleデータベースの完全なリリース番号。 

_PRIVILEGE 

現在の接続での権限レベル。 

_SQLPLUS_RELEASE 

インストールされたSQL*Plusコンポーネントの完全なリリース番号。 

_USER 

接続に使用されるユーザー名。 

_CONNECT_IDENTIFIER

使用可能な宛先への接続のためにユーザーが指定する接続識別子が含まれます。

_DATE

動的変数としての現在の日付、または固定文字列が含まれます。現行の日付はデフォルトで、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プロンプトに含めることができます。

_EDITOR

EDITコマンドで使用されるデフォルトのエディタを指定します。

Windowsオペレーティング・システムへのSQL*Plusのインストールの場合は、インストール時にメモ帳に設定されます。UNIXオペレーティング・システムの場合は、UNIX環境変数の値、EDITOR(存在する場合)に設定されます。存在しない場合はEdに設定されます。

デフォルトのテキスト・エディタの名前を保持するには、DEFINEコマンドを使用して_EDITORを再定義します。たとえば、EDITで使用するエディタをviとして定義するには、次のコマンドを入力します。

DEFINE _EDITOR = vi

_O_VERSION

インストールされたOracleデータベースの現行のバージョンが、次のような書式で含まれます。

Oracle Database 10g 10.2.0.1.0 - Production

_O_RELEASE

インストールされたOracleデータベースの完全なリリース番号が、次のような書式で含まれます。

102010000

_PRIVILEGE

現在の接続での権限レベルを示す値が含まれます。次のいずれかの値です。

AS SYSDBAおよびAS SYSOPERは、データベース管理者レベルの権限です。

参照:

AS SYSDBA権限およびAS SYSOPER権限については、『Oracle Database SQLリファレンス』を参照してください。 

_SQLPLUS_RELEASE

インストールされたSQL*Plusコンポーネントの完全なリリース番号が、次のような書式で含まれます。

101020000

_USER

現在接続しているユーザーの名前が含まれます。

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) 


DEL

iSQL*Plusでは使用できません。

構文

DEL [n | n m | n * | n LAST | * | * n | * LAST | LAST]

バッファの1つ以上の行を削除します。

SQL*Plusコマンドは、バッファに格納されません。以前に入力したコマンドの履歴は、バッファにありません。

  説明 

n

 

nが削除されます。 

n m

 

nmが削除されます。 

n *

 

nからカレント行までが削除されます。 

n LAST

 

nから最終行までが削除されます。 

*

 

カレント行が削除されます。 

* n

 

カレント行から行nまでが削除されます。 

* LAST

 

カレント行から最終行までが削除されます。 

LAST

 

最終行が削除されます。 

バッファ内のカレント行を削除するには、句を指定せずに、DELを入力します。

使用方法

DELを実行すると、バッファの次の行がある場合は、その行がカレント行になります。DELを繰り返し入力することによって、複数の連続した行を削除できます。


注意:

DELはSQL*Plusコマンドで、DELETEはSQL文です。SQLのDELETE文の詳細は、『Oracle Database SQLリファレンス』を参照してください。 


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
FROM EMP_DETAILS_VIEW
 


DESCRIBE

構文

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

 Name                                      Null?    Type
----------------------------------------- -------- ----------------
EMPLOYEE_ID NOT NULL NUMBER(6)
JOB_ID NOT NULL VARCHAR2(10)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
LOCATION_ID NUMBER(4)
COUNTRY_ID CHAR(2)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
DEPARTMENT_NAME NOT NULL VARCHAR2(30)
JOB_TITLE NOT NULL VARCHAR2(35)
CITY NOT NULL VARCHAR2(30)
STATE_PROVINCE VARCHAR2(25)
COUNTRY_NAME VARCHAR2(40)
REGION_NAME VARCHAR2(25)
 

CUSTOMER_LOOKUPという名前のプロシージャの定義を表示するには、次のように入力します。

DESCRIBE customer_lookup

PROCEDURE customer_lookup
Argument Name Type In/Out Default?
---------------------- -------- -------- ---------
CUST_ID NUMBER IN
CUST_NAME VARCHAR2 OUT
 

プロシージャ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

PROCEDURE APROC
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
P1 CHAR IN
P2 NUMBER IN
PROCEDURE BPROC
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
P1 CHAR IN
P2 NUMBER IN
 

STREET属性およびCITY属性を含むオブジェクト型ADDRESSを作成し、この定義を表示するには、次のように入力します。

CREATE TYPE ADDRESS AS OBJECT
  ( STREET  VARCHAR2(20),
    CITY    VARCHAR2(20)
  );
/

Type created.
 

DESCRIBE address

 Name                                      Null?    Type
----------------------------------------- -------- ----------------------
STREET VARCHAR2(20)
CITY VARCHAR2(20)
 

属性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
----------------------------------------- -------- ----------------------
LAST_NAME VARCHAR2(30)
EMPADDR ADDRESS
JOB_ID VARCHAR2(20)
SALARY NUMBER(7,2)
 

オブジェクト型addr_typeをオブジェクト型ADDRESSの表として作成し、この定義を表示するには、次のように入力します。

CREATE TYPE addr_type IS TABLE OF ADDRESS;
/

Type created.
 

DESCRIBE addr_type

 addr_type TABLE OF ADDRESS
Name Null? Type
----------------------------------------- -------- ----------------------
STREET VARCHAR2(20)
CITY VARCHAR2(20)
 

オブジェクト型addr_varrayをオブジェクト型ADDRESSのVARRAYとして作成し、この定義を表示するには、次のように入力します。

CREATE TYPE addr_varray AS VARRAY(10) OF ADDRESS;
/

Type created.
 

DESCRIBE addr_varray

 addr_varray VARRAY(10) OF ADDRESS
Name Null? Type
----------------------------------------- -------- ----------------------
STREET VARCHAR2(20)
CITY VARCHAR2(20)
 

DEPARTMENT_ID、PERSONおよびLOC列を含む表departmentを作成し、この定義を表示するには、次のように入力します。

CREATE TABLE department
(DEPARTMENT_ID NUMBER,
PERSON EMPLOYEE,
LOC NUMBER
);
/

Table created.
 

DESCRIBE department

 Name                                      Null?    Type
----------------------------------------- -------- ----------------------
DEPARTMENT_ID NUMBER
PERSON EMPLOYEE
LOC NUMBER
 

属性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
------------------------------ -------- ------------
NUMERATOR NUMBER
DENOMINATOR NUMBER

METHOD
------
MAP MEMBER FUNCTION RATIONAL_ORDER RETURNS NUMBER
 

XMLTypeの列を含む表を作成し、この定義を表示するには、次のように入力します。

CREATE TABLE PROPERTY (Price NUMBER, Description SYS.XMLTYPE);

Table created
 

DESCRIBE PROPERTY;

Name                                       Null?     Type
----------------------------------------- -------- ----------------------
PRICE NUMBER
DESCRIPTION SYS.XMLTYPE
 

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

 Name                                      Null?    Type
----------------------------------------- -------- ----------------------
FIRST_NAME VARCHAR2(30)
EMPADDR ADDRESS
STREET VARCHAR2(20)
CITY VARCHAR2(20)
JOB_ID VARCHAR2(20)
SALARY NUMBER(7,2)
 

暗号化された列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
----------------------------------------- -------- ----------------------
COL1 VARCHAR2(10)
COL2 VARCHAR2(15) ENCRYPT
COL3 CHAR(5)
COL4 CHAR(20)
 

CREATE TYPEコマンドの詳細は、『Oracle Database SQLリファレンス』を参照してください。

SET DESCRIBEおよびSHOW DESCRIBEコマンドの使用方法については、「SET」コマンドおよび「SHOW」コマンドを参照してください。


DISCONNECT

構文

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

EDIT

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変数を参照してください。


注意:

デフォルトのファイル名AFIEDT.BUFは、一部のオペレーティング・システムでは名前が異なる場合があります。 


ファイル名の指定がなく、バッファが空の場合は、EDITからエラー・メッセージが戻されます。

編集セッションを終了し、SQL*Plusに戻るには、テキスト・エディタの通常の終了方法に従って編集セッションを終了します。エディタの終了時、SQL*Plusはファイルの内容をバッファにロードします。


注意:

Windowsで、ワードパッドをエディタとして使用する(_EDITOR=write.exe)場合、ワードパッドを終了するとバッファは再ロードされません。この場合、GETを使用してバッファを再ロードします。 


オペレーティング・システムのテキスト・エディタを使用して、拡張子SQLが付いたファイルREPORTを編集するには、次のように入力します。

EDIT REPORT

EXECUTE

構文

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

構文

{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

GET

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

構文

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

HOST

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

INPUT

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 FROM EMP_DETAILS_VIEW
3* ORDER BY LAST_NAME
 

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
FROM EMP_DETAILS_VIEW
WHERE JOB_ID = 'SA_MAN'
AND COMMISSION_PCT = .25
ORDER BY LAST_NAME
 


LIST

構文

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
2 FROM EMP_DETAILS_VIEW
3 WHERE JOB_ID = 'SH_CLERK'
4* ORDER BY DEPARTMENT_ID
 

アスタリスクは、行4がカレント行であることを示しています。

2行目のみを表示するには、次のように入力します。

LIST 2

2行目は、次のように表示されます。

2* FROM EMP_DETAILS_VIEW
 

カレント行(この時点では行2)から最終行までを表示するには、次のように入力します。

LIST * LAST

次のように表示されます。

2 FROM EMP_DETAILS_VIEW
3 WHERE JOB_ID = 'SH_CLERK'
4* ORDER BY DEPARTMENT_ID
 


PASSWORD

構文

PASSW[ORD] [username]

usernameにはユーザーを指定します。ユーザー名を省略すると、usernameはデフォルトで現行のユーザーになります。

パスワードを入力デバイスにエコー表示せずに変更できるようにします。iSQL*Plusでは、「パスワード」画面を使用してパスワードを変更します。

使用方法

他のユーザーのパスワードを変更するには、適切な権限が付与されている必要があります。パスワードの変更方法の詳細は、「CONNECT」コマンドを参照してください。

現行のパスワードを変更するには、次のように入力します。

PASSWORD
Changing password for your_password
Old password: your_password
New password: new_password
Retype new password: new_password
Password changed
 

DBAとしてログインしていて、ユーザーjohnwの現在のパスワードjohnwpassをjohnwnewpassに変更するには、次のようにします。

PASSWORD johnw
Changing password for johnw
New password: johnwnewpass
Retype new password: johnwnewpass
Password changed
 

パスワードは、画面でエコー表示されません。ここでは、参考のためにパスワードを表示しています。


PAUSE

構文

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 ...

PRINT

構文

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
----------
1
 


PROMPT

構文

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
For example: 10
Department ID?>
 

プロンプトDepartment ID?>が表示されたら、部門番号を入力できます。デフォルトでは、SQL*Plusは置換の前後で&NEWDEPTを含む行を表示します。また、Department ID?>のプロンプトで入力された番号に対応する部門名を表示します。SET VERIFY OFFを使用して、この動作を抑止できます。


RECOVER

構文

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' 

REMARK

構文

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;

REPFOOTER

構文

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句で指定されている位置および書式に設定します。


注意:

SET EMBEDDEDがONの場合、レポート・フッターは非表示になります。 


「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;

LAST_NAME                     SALARY
------------------------- ----------
King 24000
Kochhar 17000
De Haan 17000
Russell 14000
Partners 13500
Hartstein 13000
----------
sum 98500

Page: 2
END EMPLOYEE LISTING REPORT

6 rows selected.
 

レポート・フッターの定義を変更しないで、レポート・フッターを非表示にするには、次のように入力します。

REPFOOTER OFF

REPHEADER

構文

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;

                                                                 Page:   1
EMPLOYEE LISTING REPORT
Page: 2
LAST_NAME SALARY
------------------------- ----------
King 24000
Kochhar 17000
De Haan 17000
Russell 14000
Partners 13500
Hartstein 13000
----------
sum 98500

6 rows selected.
 

レポート・ヘッダーの定義を変更せずに非表示にするには、次のように入力します。

REPHEADER OFF

RUN

構文

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
2 FROM EMP_DETAILS_VIEW
3 WHERE SALARY>12000

DEPARTMENT_ID
-------------
90
90
90
80
80
20

6 rows selected.
 


SAVE

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

SET

現行のセッションに対する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コマンドとみなされます。


SETシステム変数の一覧

システム変数  説明 

SET APPI[NFO]{ON | OFF | text} 

DBMS_APPLICATION_INFOパッケージを使用して、スクリプトの自動登録を設定します。 

SET ARRAY[SIZE] {15 | n} 

SQL*Plusがデータベースから一度にフェッチする行の数(バッチ)を設定します。 

SET AUTO[COMMIT]{ON | OFF | IMM[EDIATE] | n} 

データベースに対する保留中の変更を、Oracleデータベースがコミットする時点を制御します。 

SET AUTOP[RINT] {ON | OFF} 

バインド変数の自動出力を設定します。 

SET AUTORECOVERY [ON | OFF] 

ONを指定すると、リカバリ時に必要なアーカイブREDOログ・ファイルのデフォルトのファイル名を自動的に適用するためにRECOVERコマンドが設定されます。 

SET AUTOT[RACE] {ON | OFF | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]] 

正常に実行されたSQL DML文(SELECT、INSERT、UPDATEまたはDELETE)のレポートを表示します。 

SET BLO[CKTERMINATOR] {. | c | ON | OFF} 

PL/SQLブロックを終了するために使用する英数字以外の文字を、 cに設定します。 

SET CMDS[EP] {; | c | ON | OFF} 

1行に入力された複数のSQL*Plusコマンドを区切るために使用する英数字以外の文字を、cに設定します。 

SET COLSEP { | text} 

iSQL*Plusでは、SET COLSEPによって、<PRE>タグ内部にレンダリングされる列出力と列出力の間に出力される列セパレータ文字を指定します。

選択された列の間に出力するテキストを設定します。 

SET CON[CAT] {. | c | ON | OFF} 

通常はSQL*Plusが置換変数名の一部として解釈する文字を、変数の直後に続けて指定する場合に、置換変数参照を終了させるために使用できる文字を設定します。 

SET COPYC[OMMIT] {0 | n} 

データベースに対する変更を、COPYコマンドによってコミットした後のバッチの数を制御します。 

SET COPYTYPECHECK {ON | OFF} 

COPYコマンドを使用して表へ挿入または追加しているときは、データ型の比較を行わないように設定します。 

SET DEF[INE] {& | c | ON | OFF} 

変数の接頭辞として使用する文字を、cに設定します。 

SET DESCRIBE [DEPTH {1 | n | ALL}] [LINENUM {ON | OFF}] [INDENT {ON | OFF}] 

オブジェクトの定義を繰り返し表示する深さレベルを設定します。 

SET ECHO {ON | OFF} 

コマンドが実行されるときに、STARTコマンドによりスクリプト内の各コマンドを表示するかどうかを制御します。 

*SET EDITF[ILE] file_name[.ext] 

EDITコマンド用のデフォルトのファイル名を設定します。 

SET EMB[EDDED] {ON | OFF} 

ページのどこから各レポートが始まるかを制御します。 

SET ESC[APE] {¥ | c | ON | OFF} 

エスケープ文字として使用する文字を定義します。 

SET FEED[BACK] {6 | n | ON | OFF} 

問合せによってn個以上のレコードを選択した場合に、問合せから戻されるレコード数を表示します。 

SET FLAGGER {OFF | ENTRY | INTERMED[IATE] | FULL} 

SQL文がANSI/ISO SQL92規格に準拠しているかどうかを調べます。 

*SET FLU[SH] {ON | OFF} 

出力をユーザーの表示デバイスに、いつ送るかを制御します。 

SET HEA[DING] {ON | OFF} 

レポートへの列ヘッダーの出力を制御します。 

SET HEADS[EP] { | | c | ON | OFF} 

ヘッダーのセパレータ文字として入力する文字を定義します。 

SET INSTANCE [instance_path | LOCAL] 

セッションのデフォルトのインスタンスを、指定したインスタンス・パスに変更します。 

SET LIN[ESIZE] {80 | n} 
SET LIN[ESIZE] {150 | n}(iSQL*Plusの場合)  

SQL*Plusが新しい行を開始する前に、1行に表示する文字の合計数を設定します。 

SET LOBOF[FSET] {1 | n} 

CLOBおよびNCLOBデータを取得し、表示する開始位置を設定します。 

SET LOGSOURCE [pathname] 

リカバリ中に取得されるアーカイブ・ログの位置を指定します。 

SET LONG {80 | n} 

LONG、CLOB、NCLOBおよびXMLType値を表示するため、およびLONG値をコピーするための最大幅をバイト単位で設定します。 

SET LONGC[HUNKSIZE] {80 | n} 

SQL*PlusがLONG、CLOB、NCLOBまたはXMLType値を取得するときの増分値のサイズ(バイト単位)を設定します。 

SET MARK[UP] HTML [ON | OFF] [HEAD text] [BODY text] [TABLE text] [ENTMAP {ON | OFF}] [SPOOL {ON | OFF}] [PRE[FORMAT] {ON | OFF}] 

iSQL*Plusが使用する出力であるHTMLマークアップ・テキストを出力します。 

SET NEWP[AGE] {1 | n | NONE} 

各ページの最上部から上部タイトルまでの間に入れる空白行の数を設定します。 

SET NULL text 

SQL SELECTコマンドの実行結果の中でNULL値を表すテキストを設定します。 

SET NUMF[ORMAT] format 

数値を表示するためのデフォルトの書式を設定します。 

SET NUM[WIDTH] {10 | n} 

数値を表示するためのデフォルトの幅を設定します。 

SET PAGES[IZE] {14 | n} 

各ページの行数を設定します。 

SET PAU[SE] {ON | OFF | text} 

レポートの実行中に端末のスクロール制御を実現します。 

SET RECSEP {WR[APPED] | EA[CH] | OFF} 

RECSEPには、SQL*Plusがどこでレコードを分離するかを指定します。 

SET RECSEPCHAR { | c} 

レコード・セパレータを表示または出力します。 

SET SERVEROUT[PUT] {ON | OFF} [SIZE {n | UNL[IMITED]}] [FOR[MAT] {WRA[PPED] | WOR[D_WRAPPED] | TRU[NCATED]}] 

ストアド・プロシージャの出力(DBMS_OUTPUT PUT_LINE)またはPL/SQLブロックの出力を、SQL*Plusで表示するかどうかを制御します。 

*SET SHIFT[INOUT] {VIS[IBLE] | INV[ISIBLE]} 

シフト文字を表示する端末に適した位置合せを実現します。 

*SET SHOW[MODE] {ON | OFF} 

SETを使用して、SQL*Plusシステム変数の設定を変更したときに、新旧の設定値をSQL*Plusで表示するかどうかを制御します。 

*SET SQLBL[ANKLINES] {ON | OFF} 

SQL*PlusがSQLコマンドまたはスクリプト内に空白行を入れるかどうかを制御します。 

SET SQLC[ASE] {MIX[ED] | LO[WER] | UP[PER]} 

SQLコマンドおよびPL/SQLブロックの大/小文字を実行直前に変換します。 

*SET SQLCO[NTINUE] {> | text} 

1つのSQL*Plusコマンドをハイフン(-)を使用して次の行に続けた後で、プロンプトとしてSQL*Plusによって表示する文字列シーケンスを設定します。 

*SET SQLN[UMBER] {ON | OFF} 

SQLコマンドまたはPL/SQLブロックの2行目以降の行のためのプロンプトを設定します。 

SET SQLPLUSCOMPAT[IBILITY] {x.y[.z]} 

VARIABLEの動作または出力書式をx y [z]で指定されたリリースまたはバージョン互換に設定します。 

*SET SQLPRE[FIX] {# | c} 

SQL*Plusの接頭文字を設定します。 

*SET SQLP[ROMPT] {SQL> | text} 

SQL*Plusコマンド・プロンプトを設定します。 

SET SQLT[ERMINATOR] {; | c | ON | OFF} 

SQLコマンドを終了および実行するために使用する文字を、cに設定します。 

*SET SUF[FIX] {SQL | text} 

スクリプトを参照するコマンドの中でSQL*Plusが使用するデフォルトのファイルを設定します。 

*SET TAB {ON | OFF} 

SQL*Plusが空白をどのように端末に出力するかを指定します。 

*SET TERM[OUT] {ON | OFF} 

スクリプトから実行するコマンドによる出力の表示を制御します。 

*SET TI[ME] {ON | OFF} 

現在の時刻表示を制御します。 

SET TIMI[NG] {ON | OFF} 

タイミング統計の表示を制御します。 

*SET TRIM[OUT] {ON | OFF} 

SQL*Plusで、それぞれの表示行の終わりに後続の空白を入れるかどうかを指定します。 

*SET TRIMS[POOL] {ON | OFF} 

SQL*Plusで、それぞれのスプール行の終わりに後続の空白を入れるかどうかを指定します。 

SET UND[ERLINE] {- | c | ON | OFF} 

レポートの列ヘッダーに下線を付けるために使用する文字を、cに設定します。 

SET VER[IFY] {ON | OFF} 

置換変数を値に置き換える前後で、SQL文またはPL/SQLコマンドのテキストを表示するかどうかを制御します。 

SET WRA[P] {ON | OFF} 

カレント行の幅に対して、選択した行が長すぎる場合に、切り捨てるかどうかを制御します。 

SET XQUERY BASEURI {text} 

使用するベースURIを定義します。これは、汎用XQuery式の作成時にアクセスするファイルの接頭辞を変更する場合に有効です。 

SET XQUERY ORDERING {UNORDERED | ORDERED | DEFAULT} 

XQueryの結果の順序付けを制御します。 

SET XQUERY NODE {BYVALUE | BYREFERENCE | DEFAULT} 

作成されるノードまたは戻されるノードの保存モードを設定します。 

SET XQUERY CONTEXT {text} 

XQueryコンテキストの項目を指定します。ノードまたは値のいずれかを指定できます。 

アスタリスク(*)は、iSQL*PlusではそのSETオプションを使用できないことを示します。


SET APPI[NFO]{ON | OFF | text}

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
---------------------------------------------------
This is SQL*Plus
 

APPINFOをデフォルト設定に戻すには、次のように入力します。

SET APPINFO OFF

SET ARRAY[SIZE] {15 | n}

SQL*Plusがデータベースから一度にフェッチする行数を設定します。

有効な値は1〜5000です。値を大きくすると、多数の行をフェッチする問合せおよび副問合せの効率は向上しますが、必要なメモリーも多くなります。100より大きい値を使用しても、パフォーマンスはほとんど向上しません。ARRAYSIZEを指定しても、効率を上げる以外にSQL*Plus操作の結果に対して影響はありません。


SET AUTO[COMMIT]{ON | OFF | IMM[EDIATE] | n}

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の終了時には変更されません。コミットされていないデータは、デフォルトでコミットされます。


注意:

この機能の場合は、実際に含まれているSQLコマンドの数に関係なく、1つのPL/SQLブロックが1つのトランザクションとみなされます。 



SET AUTOP[RINT] {ON | OFF}

バインド変数の自動出力を設定します。

ONまたはOFFによって、SQL*Plusがバインド変数(正常に実行されたPL/SQLブロックで参照されているか、またはEXECUTEコマンドで使用されているもの)を自動的に表示するかどうかを制御します。

バインド変数の表示方法の詳細は、「PRINT」コマンドを参照してください。


SET AUTORECOVERY [ON | OFF]

ONを指定すると、リカバリ時に必要なアーカイブREDOログ・ファイルのデフォルトのファイル名を自動的に適用するためにRECOVERコマンドが設定されます。

予期できる名前で予期できる位置に必要なファイルが提供されるので、対話は必要ありません。使用されるファイル名は、初期化パラメータLOG_ARCHIVE_DESTおよびLOG_ARCHIVE_FORMATの値から導出されます。

OFFを指定すると、デフォルト・オプションとして、手動でファイル名を入力するか、または自動生成されたデフォルトのファイル名を指定するかを選択できます。データベース・リカバリの詳細は、「RECOVER」コマンドを参照してください。

iSQL*PlusでRECOVERコマンドを使用するには、AUTORECOVERYをONに設定する必要があります。

例:

AUTOMATICにリカバリ・モードを設定するには、次のように入力します。

SET AUTORECOVERY ON
RECOVER DATABASE

SET AUTOT[RACE] {ON | OFF | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]

正常に実行された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の詳細は、「文のトレース」を参照してください。


SET BLO[CKTERMINATOR] {. | c | ON | OFF}

PL/SQLブロックを終了するために使用する文字を、cに設定します。

英数字または空白は使用できません。ブロックを実行するには、RUNまたは/(スラッシュ)コマンドを実行する必要があります。

OFFを設定すると、SQL*Plusは、PL/SQLブロック・ターミネータを認識しません。ONを設定すると、cの値を最近使用された文字ではなくデフォルトのピリオド(.)に戻します。


SET CMDS[EP] {; | c | ON | OFF}

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';

SALARIES
LAST_NAME SALARY
------------------------- --------
Taylor $3,200
Fleaur $3,100
Sullivan $2,500
Geoni $2,800
Sarchand $4,200
Bull $4,100
Dellinger $3,400
Cabrio $3,000
Chung $3,800
Dilly $3,600
Gates $2,900
Perkins $2,500
Bell $4,000
Everett $3,900
McCain $3,200
Jones $2,800

SALARIES
LAST_NAME SALARY
------------------------- --------
Walsh $3,100
Feeney $3,000
OConnell $2,600
Grant $2,600

20 rows selected.
 


SET COLSEP { | text}

列出力と列出力の間に出力される列セパレータ文字を設定します。

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
-------------------------|----------|-------------
Hartstein |MK_MAN | 20
Fay |MK_REP | 20
 


SET CON[CAT] {. | c | ON | OFF}

通常は、SQL*Plusが置換変数の一部として解釈する文字を、変数の直後に続けて指定する場合に、置換変数参照を終了するために使用できる文字を設定します。

CONCATをオンに切り替えると、SQL*PlusはCONCATの値をピリオドにリセットします。


SET COPYC[OMMIT] {0 | n}

データベースに対する変更を、COPYコマンドによってコミットした後の行数を制御します。

COPYでは、n個の行バッチがコピーされるたびに、宛先データベースへの行がコミットされます。有効な値は0〜5000です。ARRAYSIZE変数を使用して、バッチのサイズを設定できます。COPYCOMMITを0に設定すると、COPYではコピー操作が終わったときにのみコミットを実行します。


SET COPYTYPECHECK {ON | OFF}

COPYコマンドを使用して表へ挿入または追加しているときは、データ型の比較を行わないように設定します。

このため、CHARをDB2 DATEにコピーする必要がある場合、DB2へのコピーが容易になります。


SET DEF[INE] {& | c | ON | OFF}

置換変数の接頭辞として使用する文字を、cに設定します。

ONまたはOFFによって、SQL*Plusがコマンドをスキャンして置換変数を検索し、その値に置換するかどうかを指定します。ONを設定すると、cの値を最近使用された文字ではなくデフォルトの「&」に戻します。OFFを設定すると、SCAN変数の設定がオーバーライドされます。

SCAN変数の詳細は、「SET SCAN {ON|OFF}(廃止)」を参照してください。


SET DESCRIBE [DEPTH {1 | n | ALL}] [LINENUM {ON | OFF}] [INDENT {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

       Name                            Null?    Type
------------------------------- -------- --------------------------
1 LAST_NAME VARCHAR2(30)
2 EMPADDR ADDRESS
3 2 STREET VARCHAR2(20)
4 2 CITY VARCHAR2(20)
5 JOB_ID VARCHAR2(20)
6 SALARY NUMBER(7,2)
 


SET ECHO {ON | OFF}

@、@@またはSTARTを使用して実行するスクリプトでコマンドをエコー表示するかどうかを制御します。ONを指定すると、画面にコマンドが表示されます。OFFを指定すると、非表示になります。ECHOは、対話方式で入力するコマンドまたはオペレーティング・システムからSQL*Plusにリダイレクトするコマンドの表示には影響しません。


SET EDITF[ILE] file_name[.ext]

SET EDITFILEは、iSQL*Plusではサポートされていません。

EDITコマンド用のデフォルトのファイル名を設定します。EDITコマンドの詳細は、「EDIT」コマンドを参照してください。EDITコマンド用のデフォルトのファイル名は、SQLバッファであるafiedt.bufです。バッファにはコマンド履歴リストはなく、またSQL*Plusコマンドは記録されません。

パスまたはファイル拡張子(あるいはその両方)を挿入できます。デフォルトの拡張を変更する方法については、「SET SUF[FIX] {SQL | text}」を参照してください。デフォルトのファイル名およびファイル名の最大長は、オペレーティング・システムによって異なります。


SET EMB[EDDED] {ON | OFF}

ページのどこから各レポートが始まるかを制御します。

OFFを指定すると、各レポートは新しいページの一番上から始まります。ONを指定すると、新しいページのどこからでもレポートを開始できます。直前のレポートが終了した直後に次のレポートを出力するには、EMBEDDEDをONに設定します。


SET ESC[APE] { | c | ON | OFF}

エスケープ文字として使用する文字を定義します。

OFFを指定すると、エスケープ文字の定義が解除されます。ONを指定すると、エスケープ文字が使用可能になります。ONを指定すると、cの値がデフォルトの「¥」に戻ります。

置換文字(SET DEFINEで指定された文字)の前にエスケープ文字を指定することによって、SQL*Plusにその置換文字を変数置換のための要求としてでなく、通常の文字として処理するように指示できます。

例:

感嘆符(!)をエスケープ文字として定義し、次のように入力したとします。

SET ESCAPE !
ACCEPT v1 PROMPT 'Enter !&1:'

次のプロンプトが表示されます。

Enter &1:
 

エスケープ文字をデフォルト値の¥(円記号)に戻すには、次のように入力します。

SET ESCAPE ON

SET FEED[BACK] {6 | n | ON | OFF}

スクリプトがn個以上のレコードを選択した場合に、スクリプトから戻されるレコード数を表示します。

ONまたはOFFによって、この表示をオンまたはオフにできます。フィードバックをONに設定すると、nが1に設定されます。フィードバックを0に設定することは、OFFに設定するのと同じです。

また、SET FEEDBACK OFFによって、SQLまたはPL/SQL文が正常に実行された後に表示される確認メッセージ(「表が作成されました。」、「PL/SQLプロシージャが正常に完了しました。」など)を非表示にできます。


SET FLAGGER {OFF | ENTRY | INTERMED[IATE] | FULL}

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 FLU[SH] {ON | OFF}

SET FLUSHは、iSQL*Plusではサポートされていません。

出力をユーザーの表示デバイスに、いつ送るかを制御します。OFFを指定すると、オペレーティング・システムは出力をバッファに格納できます。ONを指定すると、バッファリングは使用禁止になります。FLUSHは表示出力にのみ影響し、スプール出力には影響を与えません。

OFFは、スクリプトを非対話形式で実行する場合(スクリプトの実行が完了するまで出力またはプロンプト(あるいはその両方)を表示させる必要がない場合)のみ使用します。FLUSH OFFを使用すると、プログラムI/Oの量が減り、パフォーマンスが向上する場合があります。


SET HEA[DING] {ON | OFF}

レポートへの列ヘッダーの出力を制御します。

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

SET HEADS[EP] { | | c | ON | OFF}

列ヘッダーの行ブレークとして使用する文字を定義します。

ヘッダー区切り文字に、英数字または空白は使用できません。ヘッダー区切り文字を、COLUMNコマンドの中で、および旧形式のBTITLEおよびTTITLEの中で使用して、列ヘッダーまたはタイトルを複数の行に分割できます。ONまたはOFFによって、このヘッダー分割をオンまたはオフにできます。ヘッダー分割をOFFにすると、SQL*Plusは、ヘッダー区切り文字を他の文字と同様に出力します。ONを指定すると、cの値がデフォルトの「|」に戻ります。

ヘッダー区切り文字(SET HEADSEP)は、iSQL*Plusでは、「事前に書式設定された出力」の設定がON(SET MARKUP HTML PREFORMAT)の場合にのみサポートされます。


SET INSTANCE [instance_path | LOCAL]

セッションのデフォルトのインスタンスを、指定したインスタンス・パスに変更します。

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

インスタンスを変更するには、接続しているインスタンスから切断する必要があります。


SET LIN[ESIZE] {80 | n}

SET LIN[ESIZE] {150 | n}(iSQL*Plusの場合)

SQL*Plusが新しい行を開始する前に、1行に表示する文字の合計数を設定します。

TTITLE、BTITLE、REPHEADERおよびREPFOOTERの場合の、中央揃えおよび右揃えのテキストの位置も、この値によって制御されます。行サイズの設定の変更は、DESCRIBEコマンドによる出力で、テキストの折返しに影響する場合があります。DESCRIBEコマンドで出力される列には、通常、行サイズの割合が割り当てられます。行サイズを増減することによって、表示上、テキストの折返しが意図しない位置で行われる場合があります。LINESIZEは、値1から最大値(システムによって異なります)の範囲内で定義できます。


SET LOBOF[FSET] {1 | n}

CLOBおよびNCLOBデータを取得し、表示する開始位置を設定します。

例:

CLOB列のデータを取得するための開始位置を22桁目に設定するには、次のように入力します。

SET LOBOFFSET 22

CLOBデータは、画面上で折り返されます。SQL*Plusは、23番目の文字になるまで切捨てを行いません。


SET LOGSOURCE [pathname]

リカバリ中に取得されるアーカイブ・ログの位置を指定します。

デフォルト値は、Oracleデータベース初期化パラメータ・ファイルinit.oraのLOG_ARCHIVE_DEST初期化パラメータで設定されます。pathnameを指定せずにSET LOGSOURCEコマンドを使用すると、デフォルト位置がリストアされます。

例:

リカバリするログ・ファイルのデフォルト位置を、/usr/oracle10/dbs/archディレクトリに設定するには、次のように入力します。

SET LOGSOURCE "/usr/oracle10/dbs/arch"
RECOVER DATABASE

SET LONG {80 | n}

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バイトです。


SET LONGC[HUNKSIZE] {80 | n}

SQL*PlusがCLOB、LONG、NCLOBまたはXMLType値の取得に使用する増分値のサイズ(バイト単位)を設定します。

LONGCHUNKSIZEは、CLOB、NCLOBなどのオブジェクト・リレーショナル問合せには使用されません。

例:

SQL*PlusがLONG値を取得するときに使用する増分値のサイズを100バイトに設定するには、次のように入力します。

SET LONGCHUNKSIZE 100

LONGデータは、値全体が取得されるまで、またはSET LONGの値に到達するまで(いずれか早い方)、100バイトの増分値で取得されます。


SET MARK[UP] HTML [ON | OFF] [HEAD text] [BODY text] [TABLE text] [ENTMAP {ON | OFF}] [SPOOL {ON | OFF}] [PRE[FORMAT] {ON | OFF}]

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マークアップ・テキストを指定したファイルにスプールするスクリプトを示します。


注意:

SET MARKUPの例では、コマンドは、行継続文字「-」および空白を使用して読みやすいようにレイアウトされています。通常、コマンド・オプションは連結して入力されます。 


任意のテキスト・エディタを使用して、レポート用の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を表示できます。次のように表示されます。


画像の説明


SET NEWP[AGE] {1 | n | NONE}

各ページの最上部から上部タイトルまでの間に入れる空白行の数を設定します。値0を指定すると、(最初のページも含めて)各ページの開始位置に改ページ文字が設定され、ほとんどの端末で画面がクリアされます。NEWPAGEをNONEに設定した場合、SQL*Plusはレポートのページ間で空白行または改ページ文字を出力しません。


SET NULL text

SQL SELECTコマンドの結果にNULL値がある場合に表示されるテキストを設定します。

指定した列のNULL変数の設定を上書きするには、COLUMNコマンドのNULL句を使用します。NULLは、デフォルトでは空白("")で出力されます。


SET NUMF[ORMAT] format

数値を表示するためのデフォルトの書式を設定します。数値書式の詳細は、「COLUMN」コマンドのFORMAT句を参照してください。formatに、数値書式を入力します。

SET NUMFORMAT "" 

SET NUM[WIDTH] {10 | n}

数値を表示するためのデフォルトの幅を設定します。数値書式の詳細は、「COLUMN」コマンドのFORMAT句を参照してください。

COLUMN FORMAT設定は、SET NUMFORMAT設定より優先されます。SET NUMFORMAT設定は、SET NUMWIDTH設定より優先されます。


SET PAGES[IZE] {14 | n}

iSQL*Plus、コマンドラインおよびWindows GUIの各出力ページの行数を設定します。PAGESIZEを0に設定すると、ヘッダー、ページ・ブレーク、タイトル、初期空白行およびその他の書式設定情報をすべて非表示にできます。

iSQL*Plusでは、各ページで表示される行数を設定します。エラー・メッセージおよび情報メッセージはページ・サイズにカウントされません。そのため、ページの長さは必ずしも同じではありません。iSQL*Plusのページ・サイズのデフォルト値は24です。


SET PAU[SE] {ON | OFF | text}

レポートの実行中に端末のスクロール制御を実現します。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で指定した行数のレポート出力の後で「次のページ」ボタンを表示します。以降の出力レポートを表示するには、「次のページ」ボタンをクリックします。「次のページ」ボタンは、最後に出力されるページには表示されません。


SET RECSEP {WR[APPED] | EA[CH] | OFF}

RECSEPには、SQL*Plusがどこでレコードを分離するかを指定します。

たとえば、RECSEPをWRAPPEDに設定すると、SQL*Plusは折り返された行の直後にのみレコード・セパレータを出力します。RECSEPをEACHに設定すると、SQL*Plusは各行の後にレコード・セパレータを出力します。RECSEPにOFFを設定すると、SQL*Plusはレコード・セパレータを出力しません。

「レコード・セパレータの表示」の設定(SET RECSEP)は、「事前に書式設定された出力」がOn(SET MARKUP HTML PREFORMAT)の場合にのみiSQL*Plusでサポートされます。


SET RECSEPCHAR { | c}

表示または出力時にレコードを分離する文字を定義します。

レコード・セパレータは、LINESIZEに指定した回数だけ繰り返される1行分のRECSEPCHAR(レコードセパレータ文字)です。デフォルトは単一の空白です。


SET SERVEROUT[PUT] {ON | OFF} [SIZE {n | UNL[IMITED]}] [FOR[MAT] {WRA[PPED] | WOR[D_WRAPPED] | TRU[NCATED]}]

ストアド・プロシージャの出力(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.
PL/SQL procedure successfully completed.
 

次に、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.
1 row created.
 

出力を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
left to do
shall we continue
with plan B?
 

出力を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
shall we continue wi
 


SET SHIFT[INOUT] {VIS[IBLE] | INV[ISIBLE]}

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
---------- ----------
:JJOO: :AABBCC:
:AA:abc :DDEE:e
 

「:」は、参照できるシフト文字です。
大文字は、マルチバイト・キャラクタを示します。

小文字は、シングルバイト・キャラクタを示します。


SET SHOW[MODE] {ON | OFF}

SET SHOWMODEは、iSQL*Plusではサポートされていません。

SETを使用して、SQL*Plusシステム変数の設定を変更したときに、新旧の設定値をSQL*Plusで表示するかどうかを制御します。ONを指定すると、設定値が表示されます。OFFを指定すると、非表示になります。SHOWMODE ONの動作は、すでに廃止されたSHOWMODE BOTHと同じです。


SET SQLBL[ANKLINES] {ON | OFF}

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
-
X
 


SET SQLC[ASE] {MIX[ED] | LO[WER] | UP[PER]}

SQLコマンドおよびPL/SQLブロックの大/小文字を実行直前に変換します。

SQL*Plusは、引用符で囲まれたリテラルおよび識別子も含めて、コマンド内部のすべてのテキストを変換します。SQLCASEがUPPERの場合は、大文字に変換されます。SQLCASEがLOWERの場合は、小文字に変換されます。SQLCASEがMIXEDの場合は、変更されません。

SQLCASEでは、SQLバッファの内容自体は変更されません。


SET SQLCO[NTINUE] {> | text}

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 SQLN[UMBER] {ON | OFF}

SET SQLNUMBERは、iSQL*Plusではサポートされていません。

SQLコマンドまたはPL/SQLブロックの2行目以降の行のためのプロンプトを設定します。ONを設定すると、プロンプトは行番号に設定されます。OFFを設定すると、プロンプトはSQLPROMPTの値に設定されます。


SET SQLPLUSCOMPAT[IBILITY] {x.y[.z]}

動作を、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の互換性の設定によって影響を受ける動作を示します。SQL*Plusの互換性モードは、3つの方法で設定できます。

次の表に、動作が変更されるSQL*Plusのリリース、およびそのように動作させるためのSQLPLUSCOMPATIBILITYの最小値を示します。たとえば、VARIABLEコマンドを以前のように動作させるには、9.0.1より前のバージョンのSQL*Plusを使用するか、SQLPLUSCOMPATIBILITYに9.0.1より小さい値を使用する必要があります。SQLPLUSCOMPATIBILITYに設定できる最も低い値は7.3.4です。

表12-4    互換性のマトリックス 
  影響  使用可能な場合 

>=10.1  

SHOW ERRORSは、Oracle Database 10gでのみ使用可能な新しい列を使用して、PL/SQLエラー・メッセージをソートします。 

10.1  

>=10.1  

SPOOLオプションCREATE、REPLACEおよびSAVEが追加されました。これらのオプションは、一部のプラットフォームでファイル名の解析に影響する場合があります。 

10.1  

>=10.1  

SET SQLPROMPT 

10.1  

>=10.1  

空白文字は、引用符で囲むとWindowsファイル名に使用できます。その他の特殊句読記号には、現在Windowsでは使用できないものもあります。 

10.1  

>=10.1  

glogin/loginファイルは、再接続するたびにコールされます。 

10.1  

  <10.1  

/*コメントをエコー表示する場合は廃止されたDOC>プロンプトを使用します。 

10.1  

>= 9.2  

FOLD_AFTERで定義される幅の広い列が、新しい行の先頭に表示されます。その他の場合は、前の行の終わりに想定された幅よりも小さい幅で不適切に挿入されます。 

9.2. 

>= 9.0  

SQL文のスラッシュ(/)の前の空白は無視され、スラッシュはSQL文の実行とみなされます。その他の場合は、スラッシュはSQL文の一部(除算記号など)として扱われます。 

9.0.1.4. 

>= 9.0  

NCHARおよびNVARCHAR2型に指定する長さは文字です。その他の場合は、長さはキャラクタ・セットに応じてバイトまたは文字を表します。 

9.0.1  


SET SQLPRE[FIX] {# | c}

SET SQLPREFIXは、iSQL*Plusではサポートされていません。

SQL*Plusの接頭文字を設定します。SQLコマンドまたはPL/SQLブロックを入力している途中で、別の行に、SQL*Plus接頭文字を付けてSQL*Plusコマンドを入力できます。SQL*Plusは、入力中のコマンドまたはPL/SQLブロックに影響を与えずに、別の行に入力したコマンドを即時実行します。接頭文字は、英数字以外の文字にする必要があります。


SET SQLP[ROMPT] {SQL> | text}

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 > "

SET SQLT[ERMINATOR] {; | c | ON | OFF}

PL/SQLブロックまたはSQL文のスクリプトまたはデータ・エントリの終了、スクリプトの実行およびバッファへのスクリプトのロードのために使用する文字を設定します。

英数字または空白は使用できません。OFFを設定すると、SQL*Plusは、コマンド終了記号を認識しません。SQLコマンドを終了するには、空白行かスラッシュ(/)を入力します。SQLBLANKLINESをONに設定すると、SQLコマンドの終了にはBLOCKTERMINATORを使用する必要があります。ONを設定すると、終了記号はデフォルトのセミコロン(;)にリセットされます。


SET SUF[FIX] {SQL | text}

SET SUFFIXは、iSQL*Plusではサポートされていません。

スクリプトを参照するコマンドの中でSQL*Plusが使用するデフォルトのファイル拡張子を設定します。SUFFIXでは、スプール・ファイルの拡張子は制御できません。

例:

デフォルトのコマンド・ファイル拡張子を.SQLから.TXTに設定するには、次のように入力します。

SET SUFFIX TXT

次のように入力したとします。

GET EXAMPLE

SQL*Plus は、EXAMPLE.SQLのかわりに、EXAMPLE.TXTという名前のファイルを検索します。


SET TAB {ON | OFF}

SET TABは、iSQL*Plusではサポートされていません。

SQL*Plusが空白をどのように端末に出力するかを指定します。OFFを指定すると、空白は空白として出力されます。ONを指定すると、TAB文字が使用されます。TABの設定間隔は8文字です。TABのデフォルト値は、システムによって異なります。


SET TERM[OUT] {ON | OFF}

SET TERMOUTは、iSQL*Plusではサポートされていません。

@、@@またはSTARTを使用して実行するスクリプトのコマンドによって生成される出力の表示を制御します。OFFを指定すると非表示になるため、出力を、画面に表示せずにファイルにスプールできます。ONを指定すると、画面に出力が表示されます。TERMOUT OFFは、対話方式で入力するコマンド、またはオペレーティング・システムからSQL*Plusにリダイレクトするコマンドによる出力には影響しません。


SET TI[ME] {ON | OFF}

SET TIMEは、iSQL*Plusではサポートされていません。

現在の時刻表示を制御します。ONを指定すると、各コマンド・プロンプトの前に現在の時刻が表示されます。OFFを指定すると、時刻が非表示になります。


SET TIMI[NG] {ON | OFF}

タイミング統計の表示を制御します。

ONを指定すると、それぞれのSQLコマンドまたはPL/SQLブロックが実行されるたびに、そのタイミング統計が表示されます。OFFを指定すると、各コマンドのタイミング統計が表示されません。

複数のコマンドのタイミング情報については、「TIMING」コマンドを参照してください。


SET TRIM[OUT] {ON | OFF}

SET TRIMOUTは、iSQL*Plusではサポートされていません。

SQL*Plusで、それぞれの表示行の終わりに後続の空白を入れるかどうかを指定します。ONを指定すると、各行の終わりの空白が削除されるため、パフォーマンスが向上します。特に、低速の通信デバイスからSQL*Plusにアクセスする場合に効果的です。OFFを指定すると、SQL*Plusで後続空白を表示できます。TRIMOUT ONは、スプール出力には影響を与えません。


SET TRIMS[POOL] {ON | OFF}

SET TRIMSPOOLは、iSQL*Plusではサポートされていません。

SQL*Plusで、それぞれのスプール行の終わりに後続の空白を入れるかどうかを指定します。ONを指定すると、各行の終わりの空白が削除されます。OFFを指定すると、SQL*Plusで後続空白を表示できます。TRIMSPOOL ONは、端末出力には影響を与えません。


SET UND[ERLINE] {- | c | ON | OFF}

レポートの列ヘッダーに下線を付けるために使用する文字を設定します。下線文字には、英数字または空白は使用できません。ONまたはOFFによって、下線付けをオンまたはオフにできます。ONを指定すると、cの値がデフォルトの「-」に戻ります。

SET UNDERLINEは、「事前に書式設定された出力」がOn(SET MARKUP HTML PREFORMAT)の場合にのみiSQL*Plusでサポートされます。


SET VER[IFY] {ON | OFF}

置換変数を値と置き換える前後で、SQL文またはPL/SQLコマンドのテキストを表示するかどうかを制御します。ONを指定すると、テキストが表示されます。OFFを指定すると、非表示になります。


SET WRA[P] {ON | OFF}

現在の行の幅に対して、選択した行の表示が長すぎる場合に、切り捨てるかどうかを制御します。OFFにすると、選択した行が切り捨てられます。ONにすると、選択した行は次の行に折り返されます。

特定の列のWRAPの設定を上書きするには、COLUMNコマンドのWRAPPED句およびTRUNCATED句を使用します。

「行の折返し」のプリファレンス(SET WRAP)は、「事前に書式設定された出力」がOn(SET MARKUP HTML PREFORMAT)の場合にのみiSQL*Plusでサポートされます。


SET XQUERY BASEURI {text}

ファンクションで関連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


SET XQUERY ORDERING {UNORDERED | ORDERED | DEFAULT}

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
/

SET XQUERY NODE {BYVALUE | BYREFERENCE | DEFAULT}

ノード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
/

SET XQUERY CONTEXT {text}

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')")
/

SHOW

構文

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  
------------------------------ ----- -----
db_file_multiblock_read_count integer 12
spin_count integer 0
 

コマンドに続く任意の文字列なしで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つの列が戻されます。

列名  説明 

ORIGINAL NAME 

オブジェクト作成時に使用した元の名前を表示します。 

RECYCLEBIN NAME 

ごみ箱内のオブジェクトの識別に使用する名前を表示します。 

OBJECT TYPE 

オブジェクトの型を表示します。 

DROP TIME 

オブジェクトが削除された時刻を表示します。 

出力列の書式は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 
Fixed Size 60324 bytes
Variable Size 6627328 bytes
Database Buffers 409600 bytes
Redo Buffers 532480 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:
LINE/COL ERROR
--------------------------------------------------------
3/3 PLS-00049: bad bind variable 'P1'
 

AUTORECOVERYが使用可能かどうかを表示するには、次のように入力します。

SHOW AUTORECOVERY

AUTORECOVERY ON
 

デフォルト・インスタンスの接続識別子を表示するには、次のように入力します。

SHOW INSTANCE

INSTANCE "LOCAL"
 

アーカイブ・ログの位置を表示するには、次のように入力します。

SHOW LOGSOURCE

LOGSOURCE "/usr/oracle90/dbs/arch"
 

CJ1およびABCが削除された場所に、FLASHBACKコマンドでリカバリ可能なオブジェクトを表示するには、次のように入力します。

SHOW RECYCLEBIN

ORIGINAL NAME     RECYCLEBIN NAME       OBJECT TYPE     DROP TIME
-------------- ------------------ ------------ --------------------
CJ1 RB$$29458$TABLE$0 TABLE 2003-01-22:14:54:07
ABC RB$$29453$TABLE$0 TABLE 2003-01-20:18:50:29
 

CJ1をリストアするには、次のように入力します。

FLASHBACK TABLE CJ1 TO BEFORE DROP;

SHUTDOWN

構文

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. 
Database dismounted.
Oracle instance shut down.
 


SPOOL

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互換性マトリックス」を参照してください。

SPOOLコマンドの例

デフォルトのファイル拡張子を使用して、新しいファイルDLARYに出力を記録するには、次のように入力します。

SPOOL DIARY CREATE

既存のファイルDIARYに出力を追加するには、次のように入力します。

SPOOL DIARY APPEND

ファイルDIARYに出力を記録し、既存の内容に上書きするには、次のように入力します。

SPOOL DIARY REPLACE

スプールを停止し、ファイルをデフォルトのプリンタで印刷するには、次のように入力します。

SPOOL OUT

START

構文

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

構文

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. 

Total System Global Area 7629732 bytes
Fixed Size 60324 bytes
Variable Size 6627328 bytes
Database Buffers 409600 bytes
Redo Buffers 532480 bytes
 


STORE

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

TIMING

構文

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

TTITLE

構文

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
Data in Thousands
 

上部タイトルの定義を変更しないで非表示にするには、次のように入力します。

TTITLE OFF

UNDEFINE

構文

UNDEF[INE] variable ...

variableには、定義を参照する置換変数の名前を指定します。

明示的に(DEFINEコマンドを使用して)定義したか、または暗黙的に(STARTコマンドでの引数を使用して)定義した1つ以上の置換変数を削除します。

POSという名前の置換変数の定義を削除するには、次のように入力します。

UNDEFINE POS

MYVAR1およびMYVAR2という名前の2つの置換変数の定義を削除するには、次のように入力します。

UNDEFINE MYVAR1 MYVAR2

VARIABLE

構文

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
----------
4
 

次の例では、バインド変数を作成し、その変数を関数から戻される値に設定する方法を示します。

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;
/

PL/SQL procedure successfully completed.
LAST_NAME CITY DEPARTMENT_ID
------------------------- ------------------------------ -------------
Hartstein Toronto 20
Russell Oxford 80
Partners Oxford 80
King Seattle 90
Kochhar Seattle 90
De Haan Seattle 90

6 rows selected.
 

前述の例では、変数を表示するためにPRINTコマンドを実行する必要はありません。

次の例では、いくつかの変数を作成します。

VARIABLE id NUMBER
VARIABLE txt CHAR (20)
VARIABLE myvar REFCURSOR

定義済変数を表示するには、引数を指定せずにVARIABLEを入力します。

VARIABLE

variable id
datatype NUMBER

variable txt
datatype CHAR(20)

variable myvar
datatype REFCURSOR
 

次の例では、1つの変数を表示します。

VARIABLE txt

variable txt
datatype CHAR(20)
 

次の例では、個人別に給与を表示し、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

*** Departmental Salary Bill ***

DEPARTMENT_NAME Employee Salary
------------------------------ ------------------------- ------------
Executive De Haan $17,000.00
King $24,000.00
Kochhar $17,000.00
****************************** ------------
Subtotal: $58,000.00

Marketing Hartstein $13,000.00
****************************** ------------
Subtotal: $13,000.00

Sales Partners $13,500.00
Russell $14,000.00
****************************** ------------
Subtotal: $27,500.00

------------
Total: $98,500.00
 

次の例では、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
----------------------------------------------------------------------
Remember to run the Departmental Salary Bill report each month This r
eport contains confidential information.
 

出力位置を21番目の文字に設定するには、次のように入力します。

SET LOBOFFSET 21
PRINT T

T
----------------------------------------------------------------------
Departmental Salary Bill report each month This report contains confi
dential information.
 

CLOB列の作成については、『Oracle Database SQLリファレンス』を参照してください。


WHENEVER OSERROR

構文

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
Disconnected from Oracle......
 


WHENEVER SQLERROR

構文

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
*
ERROR at line 1:
ORA-00904: invalid column name

Disconnected from Oracle.....
 

次の例は、SQL*Plusコマンドでエラーが発生した後は、WHENEVER SQLERRORコマンドは実行されませんが、SQLコマンドまたはPL/SQLブロックでエラーが発生した場合は、実行されることを示します。

WHENEVER SQLERROR EXIT SQL.SQLCODE
column LAST_name headIing "Employee Name"

Unknown COLUMN option "headiing"

SHOW non_existed_option
 

次のPL/SQLブロック・エラーの場合、SQL*Plusが終了し、SQLエラー・コードが戻ります。

WHENEVER SQLERROR EXIT SQL.SQLCODE
begin
  SELECT COLUMN_DOES_NOT_EXIST FROM DUAL;
END;
/

SELECT COLUMN_DOES_NOT_EXIST FROM DUAL;
*
ERROR at line 2:
ORA-06550: line 2, column 10:
PLS-00201: identifier 'COLUMN_DOES_NOT_EXIST' must be declared
ORA-06550: line 2, column 3:
PL/SQL: SQL Statement ignored

Disconnected from Oracle.....
 


XQUERY

構文

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コマンドを実行すると、これらの設定の状態が表示されます。次に、これらのコマンドを示します。

表12-5     XQUERY iSQL*Plusプリファレンス(SETコマンド)
スクリプト実行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
/

Result Sequence
-------------------------------------------------------------------------------------------
<ROW><EMPNO>7369</EMPNO><ENAME>SMITH</ENAME><JOB>CLERK</JOB><MGR>7902</MGR><HIREDATE>17-
DEC-80</HIREDATE><SAL>800</SAL><DEPTNO>20</DEPTNO></ROW>

14 item(s) selected.
 


戻る 次へ
Oracle
Copyright © 2005 Oracle Corporation.

All Rights Reserved.
目次
目次
索引
索引