システム変数 | 説明 |
---|---|
SET APPI[NFO]{ON | OFF | text} |
DBMS_APPLICATION_INFOパッケージを使用して、スクリプトの自動登録を設定します。 |
|
SQL*Plusがデータベースから一度にフェッチする行の数(バッチ)を設定します。 |
SET AUTO[COMMIT]{ON | OFF | IMM[EDIATE] | n} |
データベースに対する保留中の変更を、Oracle Databaseがコミットする時点を制御します。 |
|
バインド変数の自動出力を設定します。 |
|
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 CON[CAT] {. | c | ON | OFF} |
通常はSQL*Plusが置換変数名の一部として解釈する文字を、変数の直後に続けて指定する場合に、置換変数参照を終了させるために使用できる文字を設定します。 |
|
データベースに対する変更を、COPYコマンドによってコミットした後のバッチの数を制御します。 |
|
COPYコマンドを使用して表へ挿入または追加しているときは、データ型の比較を行わないように設定します。 |
SET DEF[INE] {& | c | ON | OFF} |
変数の接頭辞として使用する文字を、cに設定します。 |
SET DESCRIBE [DEPTH {1 | n | ALL}] [LINENUM {ON | OFF}] [INDENT {ON | OFF}] |
オブジェクトの定義を繰り返し表示する深さレベルを設定します。 |
|
コマンドが実行されるときに、STARTコマンドによりスクリプト内の各コマンドを表示するかどうかを制御します。 |
SET EDITF[ILE] file_name[.ext] |
EDITコマンド用のデフォルトのファイル名を設定します。 |
|
ページのどこから各レポートが始まるかを制御します。 |
SET ERRORL[OGGING] {ON | OFF} [TABLE [schema.]tablename] [TRUNCATE] [IDENTIFIER identifier] |
SQL、PL/SQLおよびSQL*Plusの各エラーをエラー・ログ表に記録して後で問合せできるようにします。 |
SET ESC[APE] {\ | c | ON | OFF} |
エスケープ文字として使用する文字を定義します。 |
SET ESCCHAR {@ | ? | % | $ | OFF} |
ファイル名でエスケープする特殊文字を指定します。 エラーの原因となる文字変換を防止します。 |
SET FEED[BACK] {6 | n | ON | OFF} |
問合せによってn個以上のレコードを選択した場合に、問合せから戻されるレコード数を表示します。 |
SET FLAGGER {OFF | ENTRY | INTERMED[IATE] | FULL} |
SQL文がANSI/ISO SQL92規格に準拠しているかどうかを調べます。 |
|
出力をユーザーの表示デバイスに、いつ送るかを制御します。 |
|
レポートへの列ヘッダーの出力を制御します。 |
SET HEADS[EP] { | c | ON | OFF} |
ヘッダーのセパレータ文字として入力する文字を定義します。 |
SET INSTANCE [instance_path | LOCAL] |
セッションのデフォルトのインスタンスを、指定したインスタンス・パスに変更します。 |
|
SQL*Plusが新しい行を開始する前に、1行に表示する文字の合計数を設定します。 |
|
BLOB、BFILE、CLOBおよびNCLOBデータを取得し、表示する開始位置を設定します。 |
|
リカバリ中に取得されるアーカイブ・ログの位置を指定します。 |
|
LONG、BLOB、BFILE、CLOB、NCLOBおよびXMLType値を表示するため、およびLONG値をコピーするための最大幅をバイト単位で設定します。 |
|
SQL*PlusがLONG、BLOB、BFILE、CLOB、NCLOBまたはXMLType値を取得するときの増分値のサイズ(バイト単位)を設定します。 |
|
HTMLマークアップ・テキストを出力します。 |
|
各ページの最上部から上部タイトルまでの間に入れる空白行の数を設定します。 |
|
SQL SELECTコマンドの実行結果の中でNULL値を表すテキストを設定します。 |
|
数値を表示するためのデフォルトの書式を設定します。 |
|
数値を表示するためのデフォルトの幅を設定します。 |
|
各ページの行数を設定します。 |
|
レポートの実行中に端末のスクロール制御を実現します。 |
SET RECSEP {WR[APPED] | EA[CH] | OFF} |
RECSEPには、SQL*Plusがどこでレコードを分離するかを指定します。 |
|
レコード・セパレータを表示または出力します。 |
|
ストアド・プロシージャの出力(DBMS_OUTPUT PUT_LINE)またはPL/SQLブロックの出力を、SQL*Plusで表示するかどうかを制御します。 |
SET SHIFT[INOUT] {VIS[IBLE] | INV[ISIBLE]} |
シフト文字を表示する端末に適した位置合せを実現します。 |
|
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ブロックの大/小文字を実行直前に変換します。 |
|
1つのSQL*Plusコマンドをハイフン(–)を使用して次の行に続けた後で、プロンプトとしてSQL*Plusによって表示する文字列シーケンスを設定します。 |
|
SQLコマンドまたはPL/SQLブロックの2行目以降の行のためのプロンプトを設定します。 |
SET SQLPLUSCOMPAT[IBILITY] {x.y[.z]} |
VARIABLEの動作または出力書式をx.y[.z]で指定されたリリースまたはバージョン互換に設定します。 |
|
SQL*Plusの接頭文字を設定します。 |
|
SQL*Plusコマンド・プロンプトを設定します。 |
SET SQLT[ERMINATOR] {; | c | ON | OFF} |
SQLコマンドを終了および実行するために使用する文字を、cに設定します。 |
|
スクリプトを参照するコマンドの中でSQL*Plusが使用するデフォルト・ファイルを設定します。 |
|
SQL*Plusが空白をどのように端末に出力するかを指定します。 |
|
スクリプトから実行するコマンドによる出力の表示を制御します。 |
|
現在の時刻表示を制御します。 |
|
タイミング統計の表示を制御します。 |
|
SQL*Plusで、それぞれの表示行の終わりに後続の空白を入れるかどうかを指定します。 |
|
SQL*Plusで、それぞれのスプール行の終わりに後続の空白を入れるかどうかを指定します。 |
SET UND[ERLINE] {- | c | ON | OFF} |
SQL*Plusで、レポートの列ヘッダーに下線を付けるために使用する文字を、cに設定します。 |
|
置換変数を値に置き換える前後で、SQL文またはPL/SQLコマンドのテキストを表示するかどうかを制御します。 |
|
カレント行の幅に対して、選択した行が長すぎる場合に、切り捨てるかどうかを制御します。 |
|
使用するベースURIを定義します。 これは、汎用XQuery式の作成時にアクセスするファイルの接頭辞を変更する場合に有効です。 |
SET XQUERY ORDERING {UNORDERED | ORDERED | DEFAULT} |
XQueryの結果の順序付けを制御します。 |
SET XQUERY NODE {BYVALUE | BYREFERENCE | DEFAULT} |
作成されるノードまたは戻されるノードの保存モードを設定します。 |
|
XQueryコンテキストの項目を指定します。ノードまたは値のいずれかを指定できます。 |
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
SQL*Plusがデータベースから一度にフェッチする行数を設定します。
有効な値は1から5000です。値を大きくすると、多数の行をフェッチする問合せおよび副問合せの効率は向上しますが、必要なメモリーも多くなります。 100より大きい値を使用しても、パフォーマンスはほとんど向上しません。 ARRAYSIZEを指定しても、効率を上げる以外にSQL*Plus操作の結果に対して影響はありません。
SQLまたはPL/SQLコマンドの後、データベースに対する保留中の変更がOracle Databaseによってコミットされる時点を制御します。
ONを指定すると、Oracle DatabaseによってINSERT、UPDATE、DELETEまたはPL/SQLブロックがそれぞれ正常に実行された後で、データベースに対する保留中の変更がコミットされます。 OFFを指定すると、自動コミットされないため、手動で(たとえば、SQLコマンドのCOMMITを使用して)変更をコミットする必要があります。 IMMEDIATEを指定すると、ONと同じ機能が得られます。nを指定すると、Oracle Databaseによって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つのトランザクションとみなされます。 |
ONまたはOFFによって、SQL*Plusがバインド変数(正常に実行されたPL/SQLブロックで参照されているか、またはEXECUTEコマンドで使用されているもの)を自動的に表示するかどうかを制御します。
バインド変数の表示の詳細は、「PRINT」を参照してください。
ONを指定すると、リカバリ時に必要なアーカイブREDOログ・ファイルのデフォルトのファイル名を自動的に適用するためにRECOVERコマンドが設定されます。
予期できる名前で予期できる位置に必要なファイルが提供されるので、対話は必要ありません。 使用されるファイル名は、初期化パラメータLOG_ARCHIVE_DESTおよびLOG_ARCHIVE_FORMATの値から導出されます。
OFFを指定すると、デフォルト・オプションとして、手動でファイル名を入力するか、または自動生成されたデフォルトのファイル名を指定するかを選択できます。 データベース・リカバリの詳細は、「RECOVER」を参照してください。
例
AUTOMATICにリカバリ・モードを設定するには、次のように入力します。
SET AUTORECOVERY ON RECOVER DATABASE
正常に実行されたSQL DML文(SELECT、INSERT、UPDATEまたはDELETE)のレポートを表示します。
レポートには、実行統計および問合せ実行パスを含めることができます。
OFFを指定すると、トレース・レポートは表示されません。 ONを指定すると、トレース・レポートが表示されます。 TRACEONLYを指定すると、トレース・レポートは表示されますが、問合せデータは、存在しても出力されません。 EXPLAINを指定すると、実行計画が実行されて、問合せ実行パスが表示されます。 STATISTICSを指定すると、SQL文統計が表示されます。 EXPLAIN PLANについては、『Oracle Database SQL言語リファレンス』に記載されています。
明示オプションを指定しないで、ONまたはTRACEONLYを使用すると、デフォルトでEXPLAIN STATISTICSが使用されます。
TRACEONLYオプションは、大きい問合せデータを抑止する場合に有効です。 STATISTICSを指定すると、SQL*Plusは、サーバーから問合せデータをフェッチしますが、データは表示しません。
AUTOTRACEレポートは、文が正常に完了した後で出力されます。
実行計画および統計表示については、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。
SQL*PlusがSTATISTICSレポートを作成すると、データベースへの2番目の接続が自動的に確立されます。 STATISTICSオプションがOFFに設定されたか、またはSQL*Plusからログアウトした場合に、この接続はクローズされます。
AUTOTRACEレポートの書式は、接続されているサーバーのバージョンおよびサーバーの構成によって異なります。 AUTOTRACE PLANの追加情報および表形式の出力は、Oracle Database 10gリリース1(10.1)以上に接続している場合にサポートされます。 それより前のデータベースに接続する場合は、旧形式またはAUTOTRACEレポートが使用されます。
FIPSフラグ付けが使用可能な状態のときは、AUTOTRACEは使用できません。
AUTOTRACEの詳細は、「文のトレース」を参照してください。
PL/SQLブロックを終了するために使用する文字を、 cに設定します。
英数字または空白は使用できません。 ブロックを実行するには、RUNまたは/(スラッシュ)コマンドを実行する必要があります。
OFFを設定すると、SQL*Plusは、PL/SQLブロック・ターミネータを認識しません。 ONを設定すると、cの値を最近使用された文字ではなくデフォルトのピリオド(.)に戻します。
1行に入力された複数のSQL*Plusコマンドを区切るために使用する英数字以外の文字を、cに設定します。
ONまたはOFFは、1行に複数のコマンドを入力できるかどうかを制御します。 ONを設定すると、自動的にコマンド・セパレータ文字がセミコロン(;)に設定されます。
例
TTITLEでタイトルを指定して、同一行にCOLUMNで列を書式設定するには、次のように入力します。
SET CMDSEP + TTITLE LEFT 'SALARIES' + COLUMN SALARY FORMAT $99,999 SELECT LAST_NAME, SALARY FROM EMP_DETAILS_VIEW WHERE JOB_ID = 'SH_CLERK';
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. |
列出力と列出力の間に出力される列セパレータ文字を設定します。
COLSEP変数に空白または句読記号が含まれている場合は、一重引用符でテキストを囲む必要があります。 textのデフォルト値は単一の空白です。
複数行を含む行の場合、異なる行を開始する列の間には列セパレータは出力されません。 列セパレータは、BREAK...SKIP nによって生成される空白行には表示されず、レコード・セパレータが列セパレータで上書きされることもありません。 詳細は、「SET RECSEP {WR[APPED] | EA[CH] | OFF}」を参照してください。
例
列セパレータを「|」に設定するには、次のように入力します。
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 |
通常は、SQL*Plusが置換変数の一部として解釈する文字を、変数の直後に続けて指定する場合に、置換変数参照を終了するために使用できる文字を設定します。
CONCATをオンに切り替えると、SQL*PlusはCONCATの値をピリオドにリセットします。
データベースに対する変更を、COPYコマンドによってコミットした後の行数を制御します。
COPYでは、n個の行バッチがコピーされるたびに、宛先データベースへの行がコミットされます。 有効な値は0から5000です。ARRAYSIZE変数を使用して、バッチのサイズを設定できます。 COPYCOMMITを0に設定すると、COPYではコピー操作が終わったときにのみコミットを実行します。
COPYコマンドを使用して表へ挿入または追加しているときは、データ型の比較を行わないように設定します。
このため、CHARをDB2 DATEにコピーする必要がある場合、DB2へのコピーが容易になります。
ONまたはOFFによって、SQL*Plusがコマンドをスキャンして置換変数を検索し、その値に置換するかどうかを指定します。 ONを設定すると、cの値を最近使用された文字ではなくデフォルトの「&」に戻します。 OFFを設定すると、SCAN変数の設定がオーバーライドされます。
SCAN変数の詳細は、「SET SCAN {ON|OFF}(廃止)」を参照してください。
オブジェクトの定義を繰り返し表示する深さレベルを設定します。
DEPTH句の有効範囲は、1から50です。SET DESCRIBE DEPTH ALLを設定する場合、深さは最大レベルの50に設定します。 1つのオブジェクトに複数のオブジェクト型が含まれている場合は、行番号および属性や列のインデントを表示することもできます。 SET LINESIZEコマンドを使用して、表示されるデータ幅を制御します。
オブジェクトの詳細は、「DESCRIBE」を参照してください。
例
オブジェクト型ADDRESSを作成するには、次のように入力します。
CREATE TYPE ADDRESS AS OBJECT ( STREET VARCHAR2(20), CITY VARCHAR2(20) ); /
Type created |
オブジェクト型ADDRESSのネストされたオブジェクトEMPADDRを含む表EMPLOYEEを作成するには、次のように入力します。
CREATE TABLE EMPLOYEE (LAST_NAME VARCHAR2(30), EMPADDR ADDRESS, JOB_ID VARCHAR2(20), SALARY NUMBER(7,2) ); /
Table created |
深さレベル2まで表EMPLOYEEを表示して、行数も表示しながら出力をインデントするには、次のように入力します。
SET DESCRIBE DEPTH 2 LINENUM ON INDENT ON DESCRIBE employee
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) |
@、@@またはSTARTを使用して実行するスクリプトでコマンドをエコー表示するかどうかを制御します。 ONを指定すると、画面にコマンドが表示されます。 OFFを指定すると、非表示になります。 ECHOは、対話方式で入力するコマンドまたはオペレーティング・システムからSQL*Plusにリダイレクトするコマンドの表示には影響しません。
EDITコマンド用のデフォルトのファイル名を設定します。 EDITコマンドの詳細は、「EDIT」を参照してください。 EDITコマンド用のデフォルトのファイル名は、SQLバッファであるafiedt.bufです。 バッファにはコマンド履歴リストはなく、またSQL*Plusコマンドは記録されません。
パスまたはファイル拡張子(あるいはその両方)を挿入できます。 デフォルトの拡張子を変更する方法については、「SET SUF[FIX] {SQL | text}」を参照してください。 デフォルトのファイル名およびファイル名の最大長は、オペレーティング・システムによって異なります。
OFFを指定すると、各レポートは新しいページの一番上から始まります。 ONを指定すると、新しいページのどこからでもレポートを開始できます。 直前のレポートが終了した直後に次のレポートを出力するには、EMBEDDEDをONに設定します。
SQL*Plusエラー・ロギングをONまたはOFFに切り替えます。 エラー・ロギングでは、SQL、PL/SQLおよびSQL*Plusのエラーと関連パラメータをエラー・ログ表に記録します。 このログ表を問い合せて、問合せによって発生するエラーを確認できます。 エラー・ロギングがONの場合は、問合せが対話型またはスクリプトのどちらで実行されるかに関係なく、エラーが記録されます。 これは、長時間実行される問合せによって生成されるエラーの取得に特に有効で、SPOOLコマンドの使用によるすべての出力の取得、または実行中の監視を回避できます。
デフォルトで、エラーは各スキーマの表SPERRORLOGに書き込まれます。 この表が存在しない場合は、自動的に作成されます。 TABLE schema.tablenameオプションを使用して、他の表を使用するように指定することもできます。 SPERRORLOG以外の表を使用する場合は、その表がすでに存在していて、アクセス可能である必要があります。 「ユーザー定義エラー・ログ表の作成」を参照してください。
内部エラーが発生した場合は、それ自体をコールするエラー・ログによって発生する再帰エラーを回避するため、エラー・ロギングは自動的にOFFに設定されます。
エラー・ロギングは、デフォルトでOFFに設定されます。
ON
ORA、PLSおよびSP2エラーをデフォルト表のSPERRORLOGに書き込みます。
OFF
エラーを無効にします。
TABLE [schema.]tablename
デフォルトのSPERRORLOGのかわりにユーザー定義表を使用するように指定します。 schema.を省略すると、現行のスキーマに表が作成されます。 指定する表は存在している必要があり、それに対するアクセス権限が必要です。
指定した表が存在しないか、またはその表に対するアクセス権がない場合は、エラー・メッセージが表示されて、デフォルト表のSPERRORLOGが使用されます。
TRUNCATE
エラー・ログ表の既存の行すべてが消去されて、現行セッションからのエラーの記録が始まります。
IDENTIFIER identifier
エラーを識別するためのユーザー定義文字列。 特定のセッションから、または特定の問合せバージョンからエラーを識別するために使用できます。
ユーザー定義エラー・ログ表の作成
1つ以上のエラー・ログ表を作成して、デフォルトのかわりに使用できます。 TABLE schema.tablenameオプションを使用してユーザー定義エラー・ログ表を指定する前に、この表を作成して、表に対するアクセス権限を確保する必要があります。 エラー・ログ表には、次の列定義があります。
表12-4 SQL*Plusエラー・ログの列定義
列 | タイプ | 説明 |
---|---|---|
ユーザー名 |
VARCHAR(256) |
Oracleアカウント名。 |
タイムスタンプ |
TIMESTAMP |
エラー発生時間。 |
スクリプト |
VARCHAR(1024) |
発生元のスクリプトがある場合は、その名前。 |
識別子 |
VARCHAR(256) |
ユーザー定義識別子文字列。 |
メッセージ |
CLOB |
ORA、PLAまたはSP2のエラー・メッセージ。 フィードバック・メッセージは含まれていません。 たとえば、「PL/SQLブロックが作成されました。」は記録されません。 |
文 |
CLOB |
エラーを発生させた文。 |
ユーザー定義エラー・ログ表の使用
ユーザー定義ログ表を使用するには、その表へのアクセス権限が必要であり、SET ERRORLOGGINGコマンドにTABLE schema.tablenameオプションを付けて発行して、(必要に応じて)エラー・ログ表とスキーマを識別する必要があります。
エラー・ログ表の問合せ
エラー・ログ表に記録されたレコードを表示するには、任意の表で表示する必要がある列を問い合せます。 表12-4「SQL*Plusエラー・ログの列定義」に使用可能な列を示しています。
例
デフォルトのエラー・ログ表を使用して、次の内容を含むスクリプトmyfile.sqlによる問合せエラーを記録する場合:
VARIABLE U REFCURSOR BEGIN OPEN :U FOR SELECT * FROM DEPT; END; / SHOW ERRORS PROCEDURE 'SSS' SET GARBAGE SELECT * FROM GARBAGE ;
次のように入力します。
SET ERRORLOGGING ON @myfile
これによって、次の出力が表示されます。
open :u for select * from dept; * ERROR at line 2: ORA-6550: line 2, column 29: PLS-00201: ORA-00942: table or view does not exist ORA-6550: line 2, column 16: PL/SQL: SQL Statement ignored ERROR: ORA-00907: missing right parenthesis SP2-0158: unknown SET option "garbage" garbage * ERROR at line 3: ORA-00942: table or view does not exist |
デフォルトのエラー・ログ表SPERRORLOGに書き込まれたエラー・ログを表示するには、次のように入力します。
SELECT TIMESTAMP, USERNAME, SCRIPT, IDENTIFIER, STATEMENT, MESSAGE FROM SPERRORLOG;
これによって、次の出力が表示されます。
タイムスタンプ | ユーザー名 | スクリプト | 識別子 | 文 | メッセージ |
---|---|---|---|---|---|
Mon May 08 21:30:03 2006 | SYSTEM | d:\myfile.sql | open :u for select * from dept; | ORA-06550: 「行2、列27: %s」 | |
Mon May 08 21:30:05 2006 | SYSTEM | d:\myfile.sql | open :u for select * from dept; | PL/SQL: ORA-00942: 「表またはビューが存在しません。」 | |
Mon May 08 21:30:05 2006 | SYSTEM | d:\myfile.sql | open :u for select * from dept; | ORA-06550: 「行2、列13: %s」 | |
Mon May 08 21:30:05 2006 | SYSTEM | d:\myfile.sql | open :u for select * from dept; | PL/SQL: 「SQL文が無視されました。」 | |
Mon May 08 21:30:06 2006 | SYSTEM | d:\myfile.sql | show errors procedure "sss" | ORA-00907: 「右カッコがありません。」 | |
Mon May 08 21:30:09 2006 | SYSTEM | d:\myfile.sql | set garbage | SP2-0158: 「不明なSETオプションです "garbage"」 | |
Mon May 08 21:30:10 2006 | SYSTEM | d:\myfile.sql | garbage | ORA-00942: 「表またはビューが存在しません。」 |
例2
ユーザー定義エラー・ログ表を使用して、次の内容を含むスクリプトmyfile.sqlによる問合せエラーを記録する場合:
VARIABLE U REFCURSOR BEGIN OPEN :U FOR SELECT * FROM DEPT; END; / SHOW ERRORS PROCEDURE 'SSS' SET GARBAGE SELECT * FROM GARBAGE ;
次のように入力します。
SET ERRORLOGGING ON @MYFILE
これによって、次の出力が表示されます。
open :u for select * from dept; * ERROR at line 2: ORA-6550: line 2, column 29: PLS-00201: ORA-00942: table or view does not exist ORA-6550: line 2, column 16: PL/SQL: SQL Statement ignored ERROR: ORA-00907: missing right parenthesis SP2-0158: unknown SET option "garbage" garbage * ERROR at line 3: ORA-00942: table or view does not exist |
デフォルトのエラー・ログ表SPERRORLOGに書き込まれたエラー・ログを表示するには、次のように入力します。
SELECT TIMESTAMP, USERNAME, SCRIPT, IDENTIFIER, STATEMENT, MESSAGE FROM SPERRORLOG;
これによって、次の出力が表示されます。
タイムスタンプ | ユーザー名 | スクリプト | 識別子 | 文 | メッセージ |
---|---|---|---|---|---|
Mon May 08 21:30:03 2006 | SYSTEM | d:\myfile.sql | open :u for select * from dept; | ORA-06550: 「行2、列27: %s」 | |
Mon May 08 21:30:05 2006 | SYSTEM | d:\myfile.sql | open :u for select * from dept; | PL/SQL: ORA-00942: 「表またはビューが存在しません。」 | |
Mon May 08 21:30:05 2006 | SYSTEM | d:\myfile.sql | open :u for select * from dept; | ORA-06550: 「行2、列13: %s」 | |
Mon May 08 21:30:05 2006 | SYSTEM | d:\myfile.sql | open :u for select * from dept; | PL/SQL: 「SQL文が無視されました。」 | |
Mon May 08 21:30:06 2006 | SYSTEM | d:\myfile.sql | show errors procedure "sss" | ORA-00907: 「右カッコがありません。」 | |
Mon May 08 21:30:09 2006 | SYSTEM | d:\myfile.sql | set garbage | SP2-0158: 「不明なSETオプションです "garbage"」 | |
Mon May 08 21:30:10 2006 | SYSTEM | d:\myfile.sql | garbage | ORA-00942: 「表またはビューが存在しません。」 |
例3
デフォルト以外のエラー・ログ表を使用する場合:
使用するエラー・ログ表を作成します。
SET ERRORLOGGING ONコマンドのTABLEオプションで、使用する表を指定します。
エラー・ログ表には、表12-4「SQL*Plusエラー・ログの列定義」で定義された列定義が必要です。
Johnがエラー・ログ表john_sperrorlogを使用する場合を想定します。 Johnは、次のSQL文を実行して新しいエラー・ログ表を作成します。
DROP TABLE john_sperrorlog; CREATE TABLE john_sperrorlog(username VARCHAR(256), timestamp TIMESTAMP, script VARCHAR(1024), identifier VARCHAR(256), message CLOB, statement CLOB); commit;
次にJohnは、次のSETコマンドを発行して、新しく作成したエラー・ログ表を使用したエラー・ロギングを有効にします。
SET ERRORLOGGING ON TABLE john_sperrorlog
これで、Johnのエラー・ロギングはすべて、デフォルトのエラー・ログ表SPERRORLOGではなく、john_sperrorlogに記録されます。
エラー・ログ表へのアクセス権限は、任意のユーザー表へのアクセス権限と同様に処理されます。 表に対するアクセス権を付与する方法の詳細は、『Oracle Database SQL言語リファレンス』を参照してください。
OFFを指定すると、エスケープ文字の定義が解除されます。 ONを指定すると、エスケープ文字が使用可能になります。 ONを指定すると、cの値がデフォルトの「\」に戻ります。
置換文字(SET DEFINEで指定された文字)の前にエスケープ文字を指定することによって、SQL*Plusにその置換文字を変数置換のための要求としてでなく、通常の文字として処理するように指示できます。
例
感嘆符(!)をエスケープ文字として定義し、次のように入力したとします。
SET ESCAPE ! ACCEPT v1 PROMPT 'Enter !&1:'
次のプロンプトが表示されます。
Enter &1: |
エスケープ文字をデフォルト値の\(円記号)に戻すには、次のように入力します。
SET ESCAPE ON
SPOOL、START、@、RUNおよびEDITコマンドのファイル名で使用した場合に、エスケープして解釈しない文字を指定します。 これらの特殊文字は、次のように変換されます。
これらの文字をファイル名で使用しないでください。これらの文字を使用するレガシー・ファイルがある場合は、SET ESCCHARコマンドをGLoginファイルに含めてサイト全体に実装すると便利です。
例
文字「$」をファイル名に含めた場合は、次のようにします。
SET ESCCHAR $ RUN MYFILE$
正常に動作します。
スクリプトがn個以上のレコードを選択した場合に、スクリプトから戻されるレコード数を表示します。
ONまたはOFFによって、この表示をオンまたはオフにできます。 フィードバックをONに設定すると、nが1に設定されます。フィードバックを0に設定することは、OFFに設定するのと同じです。
また、SET FEEDBACK OFFによって、SQLまたはPL/SQL文が正常に実行された後に表示される確認メッセージ(「表が作成されました。」、「PL/SQLプロシージャが正常に完了しました。」など)を非表示にできます。
SQL文がANSI/ISO SQL92規格に準拠しているかどうかを調べます。
規格外の構造体が見つかると、Oracle Databaseサーバーは、その構造体にエラーのフラグを付け、違反のある構文を表示します。 これは、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はこれらのコマンドに対してアラートを表示します。
出力をユーザーの表示デバイスに、いつ送るかを制御します。 OFFを指定すると、オペレーティング・システムは出力をバッファに格納できます。 ONを指定すると、バッファリングは使用禁止になります。 FLUSHは表示出力にのみ影響し、スプール出力には影響を与えません。
OFFは、スクリプトを非対話形式で実行する場合(スクリプトの実行が完了するまで出力またはプロンプト(あるいはその両方)を表示させる必要がない場合)のみ使用します。 FLUSH OFFを使用すると、プログラムI/Oの量が減り、パフォーマンスが向上する場合があります。
ONを指定すると、列ヘッダーがレポートに出力されます。OFFを指定すると、列ヘッダーが出力されなくなります。
SET HEADING OFFコマンドは、表示される列幅に影響しません。そのコマンドは、列ヘッダーを出力しないようにするのみです。
例
レポート内で列ヘッダーを非表示にするには、次のように入力します。
SET HEADING OFF
次のようなSQL SELECTコマンドを実行したとします。
SELECT LAST_NAME, SALARY FROM EMP_DETAILS_VIEW WHERE JOB_ID = 'AC_MGR';
出力結果は次のようになります。
Higgins 12000 |
列ヘッダーの表示を戻すには、次のように入力します。
SET HEADING ON
ヘッダーのセパレータ文字に、英数字または空白は使用できません。 ヘッダーのセパレータ文字を、COLUMNコマンドの中で、および旧形式のBTITLEおよびTTITLEの中で使用して、列ヘッダーまたはタイトルを複数の行に分割できます。 ONまたはOFFによって、このヘッダー分割をオンまたはオフにできます。 ヘッダー分割をOFFにすると、SQL*Plusは、ヘッダーのセパレータ文字を他の文字と同様に出力します。 ONを指定すると、cの値がデフォルトの「|」に戻ります。
セッションのデフォルトのインスタンスを、指定したインスタンス・パスに変更します。
SET INSTANCEコマンドを使用して、データベースへは接続しません。 デフォルト・インスタンスは、インスタンスが何も指定されていないときにコマンドに対して使用されます。 SET INSTANCEを最初に使用する前の一部のコマンドは、デフォルト・インスタンスと通信します。
ご使用のオペレーティング・システムでデフォルト値のインスタンスをリセットするには、instance_pathを指定しないでSET INSTANCEを入力するか、またはSET INSTANCE LOCALを入力します。
一部のインスタンスに現在接続されていない場合は、インスタンスのみを変更できます。 つまり、現行のインスタンスから切断したことを最初に確認する必要があります。インスタンスを設定または変更し、使用可能にして新しく設定するには、インスタンスを再接続します。
このコマンドは、Oracle Netが実行されているときにのみ実行されます。 指定するインスタンス・パスとして、一部の有効なOracle Net接続識別子を使用できます。 ご使用のオペレーティング・システムでOracle Net接続識別子を指定する方法の詳細は、オペレーティング・システム固有のOracle Databaseのマニュアルを参照してください。 インスタンス・パスの最大長は、64文字です。
例
デフォルト・インスタンスに「PROD1」を設定するには、次のように入力します。
DISCONNECT SET INSTANCE PROD1
インスタンスをローカルのデフォルトに戻すには、次のように入力します。
SET INSTANCE local
インスタンスを変更するには、接続しているインスタンスから切断する必要があります。
SQL*Plusが新しい行を開始する前に、1行に表示する文字の合計数を設定します。
TTITLE、BTITLE、REPHEADERおよびREPFOOTERの場合の、中央揃えおよび右揃えのテキストの位置も、この値によって制御されます。 行サイズの設定の変更は、DESCRIBEコマンドによる出力で、テキストの折返しに影響する場合があります。 DESCRIBEコマンドで出力される列には、通常、行サイズの割合が割り当てられます。 行サイズを増減することによって、表示上、テキストの折返しが意図しない位置で行われる場合があります。 LINESIZEは、値1から最大値(システムによって異なります)の範囲内で定義できます。
BLOB、BFILE、CLOBおよびNCLOBデータを取得し、表示する開始位置を設定します。
例
CLOB列のデータを取得するための開始位置を22桁目に設定するには、次のように入力します。
SET LOBOFFSET 22
CLOBデータは、画面上で折り返されます。SQL*Plusは、23番目の文字になるまで切捨てを行いません。
デフォルト値は、Oracle Database初期化パラメータ・ファイルinit.oraのLOG_ARCHIVE_DEST初期化パラメータで設定されます。pathnameを指定せずにSET LOGSOURCEコマンドを使用すると、デフォルト位置がリストアされます。
例
リカバリするログ・ファイルのデフォルト位置を、/usr/oracle10/dbs/archディレクトリに設定するには、次のように入力します。
SET LOGSOURCE "/usr/oracle10/dbs/arch" RECOVER DATABASE
BLOB、BFILE、CLOB、LONG、NCLOBおよびXMLType値を表示するため、およびLONG値をコピーするための最大幅をバイト単位で設定します。
SET LONGCHUNKSIZEコマンドの値に関係なく、LONG列の問合せには、SET LONGで指定されたデータの量を格納するための十分なローカル・メモリーが必要です。 この要件は、LOBの問合せには適用されません。
LONG列を含む表は、作成しないことをお薦めします。 LONG列は、下位互換性のためにのみサポートされています。 かわりにLOB列(BLOB、BFILE、CLOB、NCLOB)を使用してください。 LOB列は、LONG列より制限が少なく、現在でも機能が拡張されています。
nの最大値は2,000,000,000バイトです。
例
LONG値を表示およびコピーするためにフェッチする最大バイト数を500に設定するには、次のように入力します。
SET LONG 500
LONGデータは、画面上で折り返されます。SQL*Plusは、501バイト目から切捨てを行います。 LONGのデフォルト値は80バイトです。
SQL*PlusがBLOB、BFILE、CLOB、LONG、NCLOBまたはXMLType値を取得するときに使用する増分値のサイズ(バイト単位)を設定します。
LONGCHUNKSIZEは、CLOB、NCLOBなどのオブジェクト・リレーショナル問合せには使用されません。
例
SQL*PlusがLONG値を取得するときに使用する増分値のサイズを100バイトに設定するには、次のように入力します。
SET LONGCHUNKSIZE 100
LONGデータは、値全体が取得されるまで、またはSET LONGの値に到達するまで(いずれか早い方)、100バイトの増分値で取得されます。
HTMLマークアップ・テキストを出力します。
有効にするには、動的レポート出力の値を変更する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を表示できます。 次のように表示されます。
各ページの最上部から上部タイトルまでの間に入れる空白行の数を設定します。 値0を指定すると、(最初のページも含めて)各ページの開始位置に改ページ文字が設定され、ほとんどの端末で画面がクリアされます。 NEWPAGEをNONEに設定した場合、SQL*Plusはレポートのページ間で空白行または改ページ文字を出力しません。
SQL SELECTコマンドの結果にNULL値がある場合に表示されるテキストを設定します。
指定した列のNULL変数の設定を上書きするには、COLUMNコマンドのNULL句を使用します。 NULLは、デフォルトでは空白("")で出力されます。
数値を表示するためのデフォルトの書式を設定します。 数値書式の詳細は、「COLUMN」コマンドのFORMAT句を参照してください。 formatに、数値書式を入力します。 SET NUMWIDTHで指定されたデフォルトのフィールド幅と書式設定モデルを使用するには、次のように入力します。
SET NUMFORMAT ""
数値を表示するためのデフォルトの幅を設定します。 数値書式の詳細は、「COLUMN」コマンドのFORMAT句を参照してください。
COLUMN FORMAT設定は、SET NUMFORMAT設定より優先されます。SET NUMFORMAT設定は、SET NUMWIDTH設定より優先されます。
各ページの行数を設定します。 PAGESIZEを0に設定すると、ヘッダー、ページ・ブレーク、タイトル、初期空白行およびその他の書式設定情報をすべて非表示にできます。
レポートの実行中に端末のスクロール制御を実現します。 SQL*Plusが一時停止するたびにテキストを表示する場合は、SET PAUSE textを指定した後で、SET PAUSE ONを指定します。
SET PAUSE ONは各PAGESIZEで指定した行数の各レポートの出力開始時に出力を一時停止します。 以降の出力を表示するには、[Return]を押します。 SET PAUSE textには、SQL*Plusが一時停止するたびに表示するテキストを指定します。 テキストに複数の語を含める場合は、textを引用符で囲む必要があります。
端末固有のエスケープ・シーケンスをPAUSEコマンドの中に入れることができます。 このようなシーケンスを使用すると、反転表示などの効果を持つメッセージを端末上に作成できます。
RECSEPには、SQL*Plusがどこでレコードを分離するかを指定します。
たとえば、RECSEPをWRAPPEDに設定すると、SQL*Plusは折り返された行の直後にのみレコード・セパレータを出力します。 RECSEPをEACHに設定すると、SQL*Plusは各行の後にレコード・セパレータを出力します。 RECSEPにOFFを設定すると、SQL*Plusはレコード・セパレータを出力しません。
レコード・セパレータは、LINESIZEに指定した回数だけ繰り返される1行分のRECSEPCHAR(レコード・セパレータ文字)です。 デフォルトは単一の空白です。
ストアド・プロシージャの出力(DBMS_OUTPUT.PUT_LINE)またはPL/SQLブロックの出力を、SQL*Plusで表示するかどうかを制御します。 DBMS_OUTPUTによる行の長さの制限は32767バイトです。
OFFを指定すると、DBMS_OUTPUT.PUT_LINEの出力が非表示になります。 ONを指定すると、出力が表示されます。
ONを指定すると、以前のSET SERVEROUTPUT ON SIZE n FORMAT fのSIZEおよびFORMATが使用されるか、または現在の接続で以前にSET SERVEROUTPUTコマンドが発行されていない場合はデフォルト値が使用されます。
SIZEには、Oracle Databaseサーバーの内部バッファに格納できる出力のバイト数を設定します。 デフォルトはUNLIMITEDです。nは2000以上または1,000,000以下にしてください。
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 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を使用して、SQL*Plusシステム変数の設定を変更したときに、新旧の設定値をSQL*Plusで表示するかどうかを制御します。 ONを指定すると、設定値が表示されます。OFFを指定すると、非表示になります。 SHOWMODE ONの動作は、すでに廃止されたSHOWMODE BOTHと同じです。
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 |
SQLコマンドおよびPL/SQLブロックの大/小文字を実行直前に変換します。
SQL*Plusは、引用符で囲まれたリテラルおよび識別子も含めて、コマンド内部のすべてのテキストを変換します。SQLCASEがUPPERの場合は、大文字に変換されます。SQLCASEがLOWERの場合は、小文字に変換されます。SQLCASEがMIXEDの場合は、変更されません。
SQLCASEでは、SQLバッファの内容自体は変更されません。
1つのSQL*Plusコマンドをハイフン(–)を使用して次の行に続けた後で、プロンプトとしてSQL*Plusによって表示する文字列シーケンスを設定します。
例
感嘆符とそれに続く1個の空白をSQL*Plusコマンド継続プロンプトとして設定するには、次のように入力します。
SET SQLCONTINUE '! '
SQL*Plusは、継続のプロンプトを次のように表示します。
TTITLE 'MONTHLY INCOME' - ! RIGHT SQL.PNO SKIP 2 - ! CENTER 'PC DIVISION'
継続プロンプトのデフォルトは「>」です。
SQLコマンドまたはPL/SQLブロックの2行目以降の行のためのプロンプトを設定します。 ONを設定すると、プロンプトは行番号に設定されます。 OFFを設定すると、プロンプトはSQLPROMPTの値に設定されます。
動作をx.y[.z]で指定されたリリースまたはバージョンの動作に設定します。
xはバージョン番号を、yはリリース番号を、zはアップデート番号を示します。 たとえば、8.1.7、9.0.1または10.2です。 SQLPLUSCOMPATIBILITYによって影響を受ける機能は、後述のSQL*Plus互換性マトリックスに示します。 また、コマンドラインからSQL*Plusを起動する際に、SQLPLUSコマンドの-C[OMPATIBILITY]引数を使用して、SQLPLUSCOMPATIBILITYの値を設定できます。
SQLPLUSCOMPATIBILITYのデフォルト設定は、SQL*Plusクライアントの値です。
SET SQLPLUSCOMPATIBILITY 10.2.0をスクリプトに追加して、SQL*Plusの将来のバージョンとの互換性を高めることをお薦めします。
SQL*Plus互換性マトリックスに、各SQL*Plusの互換性の設定によって影響を受ける動作を示します。 SQL*Plusの互換性モードは、3つの方法で設定できます。
SET SQLPLUSCOMPATIBILITYコマンドを、ご使用のサイトまたはユーザー・プロファイルに含めることができます。 SET SQLPLUSCOMPATIBILITYは、インストール時にはglogin.sqlに設定されません。そのため、デフォルトの互換性は11.1になります。
起動時に、SQLPLUS -C[OMPATIBILITY] {x.y[.z]}コマンド引数を使用して、そのセッションの互換性モードを設定できます。
セッション中に、SET SQLPLUSCOMPATIBILITY {x.y[.z]}コマンドを使用して、セッションに必要なSQL*Plusの動作を設定できます。
次の表に、動作が変更されるSQL*Plusのリリース、およびそのように動作させるためのSQLPLUSCOMPATIBILITYの最小値を示します。 たとえば、VARIABLEコマンドを以前のように動作させるには、9.0.1より前のバージョンのSQL*Plusを使用するか、SQLPLUSCOMPATIBILITYに9.0.1より小さい値を使用する必要があります。SQLPLUSCOMPATIBILITYに設定できる最も低い値は7.3.4です。
表12-5 互換性マトリックス
値 | 影響 | 使用可能な場合 |
---|---|---|
>=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 |
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 |
SQL*Plusの接頭文字を設定します。 SQLコマンドまたはPL/SQLブロックを入力している途中で、別の行に、SQL*Plus接頭文字を付けてSQL*Plusコマンドを入力できます。 SQL*Plusは、入力中のSQLコマンドまたはPL/SQLブロックに影響を与えずに、別の行に入力したコマンドを即時実行します。 接頭文字は、英数字以外の文字にする必要があります。
SQL*Plusコマンド・プロンプトを設定します。 SET SQLPROMPTによって変数が動的に置換されます。 これによって、実行時の変数(現在の接続識別子など)を挿入できます。 SQLPROMPTで使用される置換変数の前に「&」を付ける必要はありません。他の置換変数と同様に使用およびアクセスできます。 デフォルトのプロンプトでは、変数の置換は「SQL>」に対して試行されません。
変数の置換は、SQLPROMPTにSETを指定するたびに行われます。 SQLPROMPTがglogin.sqlに含まれている場合、SQLPROMPTの置換変数はログインまたは接続するたびに更新されます。
例
接続識別子を表示するSQL*Plusプロンプトを変更するには、次のように入力します。
SET SQLPROMPT "_CONNECT_IDENTIFIER > "
現行のユーザーを表示するSQL*Plusコマンド・プロンプトを設定するには、次のように入力します。
SET SQLPROMPT "_USER > "
SQL*Plusプロンプトを変更して現在の日付、現行のユーザーおよびユーザーの権限レベルを表示するには、次のように入力します。
SET SQLPROMPT "_DATE _USER _PRIVILEGE> "
SQL*Plusプロンプトを変更して定義済の変数を表示するには、次のように入力します。
DEFINE mycon = Prod1 SET SQLPROMPT "mycon> "
Prod1> |
ネストした引用符内のテキストは、置換用には解析されません。 SQL*Plusプロンプトに、ユーザー名、「@」および接続識別子をこの順序で表示するには、次のように入力します。
SET SQLPROMPT "_USER'@'_CONNECT_IDENTIFIER > "
PL/SQLブロックまたはSQL文のスクリプトまたはデータ・エントリの終了、スクリプトの実行およびバッファへのスクリプトのロードのために使用する文字を設定します。
英数字または空白は使用できません。 OFFを設定すると、SQL*Plusは、コマンド終了記号を認識しません。SQLコマンドを終了するには、空白行かスラッシュ(/)を入力します。 SQLBLANKLINESがONに設定されている場合は、BLOCKTERMINATORを使用してSQLコマンドを終了する必要があります。 ONを設定すると、終了記号はデフォルトのセミコロン(;)にリセットされます。
スクリプトを参照するコマンドの中でSQL*Plusが使用するデフォルトのファイル拡張子を設定します。 SUFFIXでは、スプール・ファイルの拡張子は制御できません。
例
デフォルトのコマンド・ファイル拡張子を.SQLから.TXTに設定するには、次のように入力します。
SET SUFFIX TXT
次のように入力したとします。
GET EXAMPLE
SQL*Plusは、EXAMPLE.SQLのかわりに、EXAMPLE.TXTという名前のファイルを検索します。
SQL*Plusが空白をどのように端末に出力するかを指定します。OFFを指定すると、空白は空白として出力されます。 ONを指定すると、TAB文字が使用されます。 TABの設定間隔は8文字です。 TABのデフォルト値は、システムによって異なります。
@、@@またはSTARTを使用して実行するスクリプトのコマンドによって生成される出力の表示を制御します。 OFFを指定すると非表示になるため、出力を、画面に表示せずにファイルにスプールできます。 ONを指定すると、画面に出力が表示されます。 TERMOUT OFFは、対話方式で入力するコマンド、またはオペレーティング・システムからSQL*Plusにリダイレクトするコマンドによる出力には影響しません。
現在の時刻表示を制御します。 ONを指定すると、各コマンド・プロンプトの前に現在の時刻が表示されます。 OFFを指定すると、時刻が非表示になります。
ONを指定すると、それぞれのSQLコマンドまたはPL/SQLブロックが実行されるたびに、そのタイミング統計が表示されます。 OFFを指定すると、各コマンドのタイミング統計が表示されません。
複数のコマンドのタイミング情報については、「TIMING」を参照してください。
例
タイミング統計の書式は、オペレーティング・システムによって異なります。 LinuxおよびWindowsでは、タイミング統計は24時間形式で、時間、分、秒および100分の1秒を表示します。
SET SUFFIX TXT
次のように入力したとします。
GET EXAMPLE
SQL*Plusは次のような出力を表示します。
GET EXAMPLE
SQL*Plusで、それぞれの表示行の終わりに後続の空白を入れるかどうかを指定します。 ONを指定すると、各行の終わりの空白が削除されるため、パフォーマンスが向上します。特に、低速の通信デバイスからSQL*Plusにアクセスする場合に効果的です。 OFFを指定すると、SQL*Plusで後続空白を表示できます。 TRIMOUT ONは、スプール出力には影響を与えません。
SQL*Plusで、それぞれのスプール行の終わりに後続の空白を入れるかどうかを指定します。 ONを指定すると、各行の終わりの空白が削除されます。 OFFを指定すると、SQL*Plusで後続空白を表示できます。 TRIMSPOOL ONは、端末出力には影響を与えません。
レポートの列ヘッダーに下線を付けるために使用する文字を設定します。 下線文字には、英数字または空白は使用できません。 ONまたはOFFによって、下線付けをオンまたはオフにできます。 ONを指定すると、cの値がデフォルトの「-」に戻ります。
置換変数を値と置き換える前後で、SQL文またはPL/SQLコマンドのテキストを表示するかどうかを制御します。 ONを指定すると、テキストが表示されます。OFFを指定すると、非表示になります。
現在の行の幅に対して、選択した行の表示が長すぎる場合に、切り捨てるかどうかを制御します。 OFFにすると、選択した行が切り捨てられます。ONにすると、選択した行は次の行に折り返されます。
特定の列のWRAPの設定を上書きするには、COLUMNコマンドのWRAPPED句およびTRUNCATED句を使用します。
ファンクションで関連URIを解決するために使用するベースURIを指定します。 XQueryでアクセスするファイルの接頭辞を変更できるようにします。
BASEURIの設定を解除するには、次のように空の文字列を設定します。
SET XQUERY BASEURI ''
値はXQUERYコマンドの発行時にのみ確認されるため、注意して有効な値を入力してください。
例
SET XQUERY BASEURI '/public/scott' XQUERY for $i in doc("foo.xml") return $i /
これは、次のようにも入力できます。
XQuery declare base-uri "/public/hr"; for $i in doc("foo.xml") return $i
XQueryの出力の順序付けを設定します。 次の3つの値があります。
UNORDERED: データベースから取得された順序で結果が格納されることを指定します。
ORDERED: XQueryで定義された順序で結果が格納されることを指定します。
DEFAULT: データベースのデフォルトを指定します。 Oracle Database 10gでは、デフォルトはUNORDEREDです。
SET XQUERY ORDERINGが設定されていない場合、デフォルトはDEFAULT(UNORDERED)です。
例
SET XQUERY ORDERING ORDERED XQUERY for $i in doc("foo.xml") return $i /
これは、次のようにも入力できます。
XQuery declare ordering ordered; for $i in doc("foo.xml") return $i /
ノードID保存モードを設定します。 保存モードは、新規ノードを作成するすべての式(要素コンストラクタなど)またはノードを含む項目あるいはシーケンスを戻すすべての式に適用されます。 次の3つの値があります。
BYVALUE: ノードIDを保存する必要がないことを指定します。 これは、作成などのノード操作または式の結果として戻されたノード操作がディープ・コピーされ、元のツリーでのコンテキストが失われることを意味します。 このノード上でのノードID、親軸、兄弟軸または順序付けをテストする後続の操作は定義されません。
BYREFERENCE: ノードIDを保存する必要があることを指定します。 このノード上での後続の操作で、ノードのコンテキストおよび定義が保存されます。
DEFAULT: データベースのデフォルトを指定します。 Oracle Database 10gでは、デフォルトはBYVALUEです。
SET XQUERY NODEが設定されていない場合、デフォルトはDEFAULT(BYVALUE)です。
例
SET XQUERY NODE BYREFERENCE XQUERY for $i in doc("foo.xml") return $i /
これは、次のようにも入力できます。
XQuery declare node byreference; for $i in doc("foo.xml") return $i /
XQueryコンテキスト項目の式を指定します。 コンテキスト項目の式によって、コンテキスト項目に対して評価が行われます。コンテキスト項目は、ノード(式fn:doc("bib.xml")//book[fn:count(./author)>1を指定])または原子価(式(1 to 100)[. mod 5 eq 0]を指定)のいずれかです。
XQUERY CONTEXTの設定を解除するには、次のように空の文字列を設定します。
SET XQUERY CONTEXT ''
値はXQUERYコマンドの発行時にのみ確認されるため、注意して有効な値を入力してください。
例
SET XQUERY CONTEXT 'doc("foo.xml")' XQUERY for $i in /a return $i /
これは、次のようにも入力できます。
XQuery for $i in /a return $i passing XMLQuery("doc('foo.xml')") /