13.44 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 Databaseがコミットする時点を制御します。

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またはMERGE)のレポートを表示します。

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

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

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

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

SET COLINVI[SIBLE] [ON | OFF]

ONにすると、DESCRIBEコマンドで非表示列の列情報が表示されるよう設定されます。

SET COLSEP {  | text}

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

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}] [[ANNO]TATION {ON|OFF}]

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

SET ECHO {ON | OFF}

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

SET EDITF[ILE] file_name[.ext]

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

SET EMB[EDDED] {ON | OFF}

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

SET ERRORDETAILS { OFF | ON | VERBOSE }
SQL、PL/SQLまたはSQL*Plus文の実行中に失敗したときに、Oracle Databaseエラー・ヘルプのURLを原因と処置の詳細とともに表示します。
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 EXITC[OMMIT] {ON | OFF}

デフォルトのEXIT動作をCOMMITにするかROLLBACKにするかを指定します。

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

問合せによって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 HIST[ORY] {ON | OFF | n}

現在のSQL*Plusセッションで発行されたコマンドおよびSQL文またはPL/SQL文の履歴を有効または無効にします。

SET INSTANCE [instance_path | LOCAL]

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

SET JSONPRINT
JSON型の列の出力を書式設定します。
SET LIN[ESIZE] {80 | n | WINDOW}

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

SET LOBOF[FSET] {1 | n}

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

SET LOBPREFETCH {0 | n}

SQL*Plusがデータベースから一度にプリフェッチするLOBデータの量を設定します。

SET LOGSOURCE [pathname]

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

SET LONG {80 | n}

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

SET LONGC[HUNKSIZE] {80 | n}

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

SET MARK[UP]

CSV形式のデータまたは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 ROWLIMIT {n | OFF}

問合せに対して表示する行数の制限を設定します。

SET ROWPREFETCH {15 | n}

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

SET SECUREDCOL {OFF | ON} [UNAUTH[ORIZED] text] [UNK[NOWN] text]

セキュアな列値を、列を表示する権限のないユーザーおよびセキュリティが不明の列に対して表示する方法を設定します。

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 STATEMENTC[ACHE] {0 | n}

文キャッシュ・サイズを設定します。

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}

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

SET VER[IFY] {ON | OFF}

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

SET WRA[P] {ON | OFF}

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

SET XMLOPT[IMIZATIONCHECK] [ON|OFF]

完全に最適化されたXML問合せおよびDML操作のみを実行するように指定します。開発およびデバッグでのみ使用してください。本番環境では使用しないでください。

SET XQUERY BASEURI {text}

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

SET XQUERY ORDERING {UNORDERED | ORDERED | DEFAULT}

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

SET XQUERY NODE {BYVALUE | BYREFERENCE | DEFAULT}

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

SET XQUERY CONTEXT {text}

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

13.44.1 SET APPINFO

構文

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パッケージ・インタフェースで許可されている長さまで切り捨てられる場合があります。

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

13.44.2 SET ARRAYSIZE

構文

SET ARRAY[SIZE] {15 | n}

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

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

13.44.3 SET AUTOCOMMIT

構文

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

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つのトランザクションとみなされます。

13.44.4 SET AUTOPRINT

構文

SET AUTOP[RINT] {ON | OFF}

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

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

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

13.44.5 SET AUTORECOVERY

構文

SET AUTORECOVERY [ON | OFF]

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

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

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

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

SET AUTORECOVERY ON
RECOVER DATABASE

13.44.6 SET AUTOTRACE

構文

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

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

レポートには、実行統計および問合せ実行パスを含めることができます。

動的サンプリングが有効な場合、DMLに関するSQL*Plusのレポート出力が異なる場合があります。

OFFを指定すると、トレース・レポートは表示されません。ONを指定すると、トレース・レポートが表示されます。TRACEONLYを指定すると、トレース・レポートは表示されますが、問合せデータは、存在しても出力されません。EXPLAINを指定すると、実行計画が実行されて、問合せ実行パスが表示されます。STATISTICSを指定すると、SQL文統計が表示されます。EXPLAIN PLANの詳細は、「EXPLAIN PLAN」を参照してください。

明示オプションを指定しないで、ONまたはTRACEONLYを使用すると、デフォルトでEXPLAIN STATISTICSが使用されます。

TRACEONLYオプションは、大きい問合せデータを抑止する場合に有効です。STATISTICSを指定すると、SQL*Plusは、サーバーから問合せデータをフェッチしますが、データは表示しません。

AUTOTRACEレポートは、文が正常に完了した後で出力されます。

SQL*PlusがSTATISTICSレポートを作成すると、データベースへの2番目の接続が自動的に確立されます。STATISTICSオプションがOFFに設定されたか、またはSQL*Plusからログアウトした場合に、この接続はクローズされます。

AUTOTRACEレポートの書式は、接続されているサーバーのバージョンおよびサーバーの構成によって異なります。AUTOTRACE PLANの追加情報および表形式の出力は、Oracle Database 10gリリース1(10.1)以上に接続している場合にサポートされます。それより前のデータベースに接続する場合は、旧形式またはAUTOTRACEレポートが使用されます。

FIPSフラグ付けが使用可能な状態のときは、AUTOTRACEは使用できません。

AUTOTRACEの詳細は、文のトレースについてを参照してください。

13.44.7 SET BLOCKTERMINATOR

構文

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

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

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

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

13.44.8 SET CMDSEP

構文

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.

13.44.9 SET COLINVISIBLE

構文

SET COLINVI[SIBLE] [ON | OFF]

ONを指定すると、DESCRIBEコマンドで非表示列の情報を表示できるようになります。

SET COLINVISIBLEを指定しても、非表示列を含む問合せ文に対して影響はありません。非表示列のデータを取得するには、問合せでその列を明示的に指定します。

非表示列の情報をDESCRIBEコマンドで表示するには、次のようにします。

非表示列を含む表を作成します。

create table test_invisible_cols (emp_id number, emp_info char(20),
                                  emp_acc_no number invisible);
Table created.

DESCRIBEコマンドを使用して表の列を表示します。

describe test_invisible_cols
Name                                      Null?    Type
----------------------------------------- -------- -----------------------
EMP_ID                                             NUMBER
EMP_INFO                                           CHAR(20)

デフォルトのSET COLINVISIBLE OFFでは、非表示列は結果に表示されません。SET COLINVISIBLEのデフォルト設定をONに変更します。

SET COLINVISIBLE ON
colinvisible ON

再度、DESCRIBEコマンドを使用して表の列を表示します。今度は非表示列が出力されます。

describe test_invisible_cols
Name                                      Null?    Type
----------------------------------------- -------- -----------------------
EMP_ID                                             NUMBER
EMP_INFO                                           CHAR(20)
EMP_ACC_NO(INVISIBLE)                              NUMBER

13.44.10 SET COLSEP

構文

SET COLSEP {  | text}

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

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

13.44.11 SET CONCAT

構文

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

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

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

13.44.12 SET COPYCOMMIT

構文

SET COPYC[OMMIT] {0 | n}

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

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

13.44.13 SET COPYTYPECHECK

構文

SET COPYTYPECHECK {ON | OFF}

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

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

13.44.14 SET DEFINE

構文

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

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

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

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

13.44.15 SET DESCRIBE

構文

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

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

DEPTHの有効範囲は、1から50です。SET DESCRIBE DEPTH ALLを使用する場合、深さは最大許容レベルの50に設定します。オブジェクトに複数のオブジェクト型が含まれている場合は、属性や列名の行番号およびインデントを表示できます。SET LINESIZEコマンドを使用して、表示されるデータ幅を制御します。

SET DESCRIBEコマンドは、列に関連付けられている注釈の表示を有効または無効にする場合にも使用します。デフォルトでは、注釈は無効になっています。無効になっている場合、DESCRIBEコマンドは注釈情報を表示しません。注釈が有効な場合は、注釈情報(列で使用可能な場合)が表示されます。デフォルトのlinesizeは120文字に設定されています。ユーザーは、要件に従ってlinesizeをリセットできます。

注釈データが、定義されたANNOTATIONS列の長さより長い場合、データはANNOTATIONS列に収まるように整列および折り返されます。ANNOTATIONS列の長さは、列名およびデータ型に比例したSET LINESIZE値の割合として決定されます。

オブジェクトの詳細は、「DESCRIBE」を参照してください。

例1

次の例は、SET DESCRIBEコマンドを使用して、指定した深さレベルまでオブジェクトを記述する方法を示しています。オブジェクト型ADDRESSが作成されます。

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

次の例に示すように、EMPLOYEE表には、ADDRESS型のネストされたオブジェクトEMPADDRがあります。

CREATE TABLE EMPLOYEE
  (LAST_NAME VARCHAR2(30),
   EMPADDR ADDRESS,
   JOB_ID VARCHAR2(20),
   SALARY NUMBER(7,2)
  );
/
Table created

SET DESCRIBEコマンドを使用して、次の例に示すように、表EMPLOYEEを2レベルの深さまで記述し、出力をインデントし、行番号を表示できます。

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)

例2

次の例では、列の注釈情報を表示します。表ANNOTATION_TABには、列c1に関連付けられた注釈情報があります。

CREATE TABLE annotation_tab
  (c1 NUMBER ANNOTATIONS(EmpGroup2 'Emp_Info', Hidden),
   c2 NUMBER PRIMARY KEY);

SET_DESCRIBEコマンドを使用して、次の例に示すように、列の注釈情報の表示を有効にできます。

SET DESCRIBE ANNOTATION ON
DESCRIBE annotation_tab

次のような出力結果が表示されます。


 Name                        Null?    Type                       Annotations (Key: Value)               
--------------------------- -------- ------------------------- ----------------------------
C1                                   NUMBER                     EMPGROUP2: Emp_Info                    
                                                                HIDDEN: 
C2                                   NUMBER

ANNOTATION_TAB1には、列c2に注釈情報が関連付けられています。

CREATE TABLE annotation_tab1
  (c1 NUMBER,
   c2 NUMBER ANNOTATIONS (EmpGroup1 'Emp_Info', 
             EmpGroup2 'Emp_Info', Hidden));

SET_DESCRIBEコマンドを使用して、次の例に示すように、列の注釈情報の表示を有効にできます。

SET DESCRIBE ANNOTATION ON
DESCRIBE annotation_tab1

次のような出力結果が表示されます。

Name                        Null?    Type                           Annotations (Key: Value)               
--------------------------- -------- -------------------------- -------------------------
C1                                   NUMBER
C2                                   NUMBER                         EMPGROUP1: Emp_Info                    
                                                                    EMPGROUP2: Emp_Info
                                                                    HIDDEN:  

例3

次の例では、表に関連付けられた注釈の出力を表示します。表ANNOTATION_TAB2には注釈が関連付けられています。

CREATE TABLE annotation_tab2 (c1 NUMBER ANNOTATIONS(EmpGroup2 'Emp_Info', Hidden),
                    c2 NUMBER PRIMARY KEY)
                    annotations (table_anno 'Table annotation 1',
                                 table_anno2 'Table annotation 2')); 

SET_DESCRIBEコマンドを使用して、次の例に示すように、表に関連付けられた注釈を表示できます。

SET DESCRIBE ANNOTATION ON
DESCRIBE annotation_tab2

次のような出力結果が表示されます。

Table Annotations (Key: Value)
--------------------------------------------------------------------------------------------
TABLE_ANNO: Table annotation 1
TABLE_ANNO2: Table annotation 2
Name                         Null?    Type                       Annotations (Key: Value)               
 ---------------------------- -------- -------------------------- ------------------------------
 C1                                    NUMBER                     EMPGROUP2: Emp_Info                    
                                                                  HIDDEN: 
 C2                                    NUMBER

13.44.16 SET ECHO

構文

SET ECHO {ON | OFF}

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

13.44.17 SET EDITFILE

構文

SET EDITF[ILE] file_name[.ext]

EDITコマンド用のデフォルトのファイル名を設定します。EDITコマンドの詳細は、「EDIT」を参照してください。EDITコマンド用のデフォルトのファイル名は、SQLバッファであるafiedt.bufです。

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

13.44.18 SET EMBEDDED

構文

SET EMB[EDDED] {ON | OFF}

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

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

13.44.19 SET ERRORDETAILS

構文

SET ERRORDETAILS { OFF | ON | VERBOSE }

SQL*PlusでSQL、PL/SQLまたはSQL*Plus文の実行中に失敗したときにOracle Databaseエラー・ヘルプのURLが原因と処置の詳細とともに表示されるようにします。

ERRORDETAILSONに設定すると、Oracle Databaseエラー・ヘルプのURLが表示されます。これはデフォルトの設定です。ERRORDETAILSVERBOSEに設定すると、Oracle Databaseエラー・ヘルプのURLと、エラー・メッセージの原因、処置、パラメータなどの詳細が表示されます。OFFに設定すると、URLもその他のエラー・ヘルプ詳細も表示されなくなります。

ノート:

ERRORDETAILSのデフォルト値はONです。環境変数ORA_SUPPRESS_ERROR_URLが設定されている場合、値ERRORDETAILSは、ORA_SUPPRESS_ERROR_URL変数に設定されている値に基づいて、ONまたはOFFに設定されます。

次の例では、変数ERRORDETAILSONに設定されています。
SET ERRORDETAILS ON
SELECT * FROM EMP;
SP2-0640: Not connected
Help: https://docs.oracle.com/error-help/db/sp2-0640/

次の例では、変数ERRORDETAILSOFFに設定されています。

SET ERRORDETAILS OFF
DECLARE
  B VARCHAR2(100);
BEGIN
  SELECT EMPNO INTO B FROM EMP;
END;
/
DECLARE
*
ERROR at line 1:
ORA-01422: exact fetch returned more than the requested number of rows (1)

次の例では、変数ERRORDETAILSVERBOSEに設定されています。

SET ERRORDETAILS VERBOSE
DECLARE
  B VARCHAR2(100);
BEGIN
  SELECT EMPNO INTO B FROM EMP;
END;
/
DECLARE
*
ERROR at line 1:
ORA-01422: exact fetch returned more than the requested number of rows (1)
Help: https://docs.oracle.com/error-help/db/ora-01422/
Cause: The cause is one of the following:
	1. A SELECT statement was executed in the exact fetch
	   mode and returned more rows than requested.
	2. In PL/SQL, a SELECT INTO statement returned more than one row.
	3. In PL/SQL, a DML RETURNING INTO statement
	   returned more than one row.
Action: Choose the action corresponding to the cause as numbered:
	1. Increase the number of rows requested to accommodate the
	   number of rows returned;
	   or omit the exact fetch mode on the fetch call.
	2. In PL/SQL, use a FOR loop to process the rows.
	3. In PL/SQL, use BULK COLLECT to return values into a table.
Params: 1) requested_rows: The number of requested rows. 

13.44.20 SET ERRORLOGGING

構文

SET ERRORL[OGGING] {ON | OFF} [TABLE [schema.]tablename] [TRUNCATE] [IDENTIFIER identifier]

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オプションを使用してユーザー定義エラー・ログ表を指定する前に、この表を作成して、表に対するアクセス権限を確保する必要があります。エラー・ログ表には、次の列定義があります。

表13-4 SQL*Plusエラー・ログの列定義

タイプ 説明

username

VARCHAR(256)

Oracleアカウント名。

timestamp

TIMESTAMP

エラー発生時間。

script

VARCHAR(1024)

発生元のスクリプトがある場合は、その名前。

identifier

VARCHAR(256)

ユーザー定義識別子文字列。

message

CLOB

ORA、PLAまたはSP2のエラー・メッセージ。フィードバック・メッセージは含まれていません。たとえば、「PL/SQLブロックが作成されました。」は記録されません。

statement

CLOB

エラーを発生させた文。

ユーザー定義エラー・ログ表の使用

ユーザー定義ログ表を使用するには、その表へのアクセス権限が必要であり、SET ERRORLOGGINGコマンドにTABLE schema.tablenameオプションを付けて発行して、(必要に応じて)エラー・ログ表とスキーマを識別する必要があります。

エラー・ログ表の問合せ

エラー・ログ表に記録されたレコードを表示するには、任意の表で表示する必要がある列を問い合せます。使用可能な列を表13-4に示しています。

デフォルトのエラー・ログ表を使用して、次の内容を含むスクリプト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;

これによって、次の出力が表示されます。

TIMESTAMP ユーザー名 スクリプト 識別子 メッセージ

Mon May 08 21:30:03 2006

SYSTEM

d:\myfile.sql

open :u for select * from dept;

ORA-06550: 「行2、列27:」

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

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;

これによって、次の出力が表示されます。

TIMESTAMP ユーザー名 スクリプト 識別子 メッセージ

Mon May 08 21:30:03 2006

SYSTEM

d:\myfile.sql

open :u for select * from dept;

ORA-06550: 「行2、列27:」

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

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オプションで、使用する表を指定します。

エラー・ログ表の列定義は表13-4で定義されている必要があります。

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

ユーザー・コメントgiridhar123から前の例のコミットを削除しました(14Feb08)

次にJohnは、次のSETコマンドを発行して、新しく作成したエラー・ログ表を使用したエラー・ロギングを有効にします。

SET ERRORLOGGING ON TABLE john_sperrorlog

これで、Johnのエラー・ロギングはすべて、デフォルトのエラー・ログ表SPERRORLOGではなく、john_sperrorlogに記録されます。

エラー・ログ表へのアクセス権限は、任意のユーザー表へのアクセス権限と同様に処理されます。

13.44.21 SET ESCAPE

構文

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

13.44.22 SET ESCCHAR

構文

SET ESCCHAR {@ | ? | % | OFF}

SPOOL、START、@、RUNおよびEDITコマンドのファイル名で使用した場合に、エスケープして解釈しない文字を指定します。これらの特殊文字は、次のように変換されます。

  • ファイル名の@はOracle SIDに変換されます

  • ?はUNIXでOracleホームに変換されます

  • %はWindowsでOracleホームに変換されます

これらの文字をファイル名で使用しないでください。これらの文字を使用するレガシー・ファイルがある場合は、SET ESCCHARコマンドをGLoginファイルに含めてサイト全体に実装すると便利です。

エスケープしない場合、@、?および%の文字は解釈の際に重要となり、SPOOL、START、@、RUNおよびEDITコマンドでエラーの原因となります。

SET ESCCHARは、デフォルトでOFFに設定されます。

ノート:

Oracle Databaseリリース19cバージョン19.3以降では、$文字を含むファイル名はWindowsで実行されなくなります。

13.44.23 SET EXITCOMMIT

構文

SET EXITC[OMMIT] {ON | OFF}

デフォルトのEXIT動作をCOMMITにするかROLLBACKにするかを指定します。

デフォルト設定はONです。つまり、作業はコミットするかどうかの意図にかかわらず、終了時にコミットされます。EXITCOMMIT OFFを設定すると、作業は終了時にロールバックされます。

表13-5に、SETコマンド(AUTOCOMMITとEXITCOMMIT)およびEXITコマンドの組合せに関連付けられた終了アクションを示します。

表13-5 終了動作: AUTOCOMMIT、EXITCOMMIT、EXIT

AUTOCOMMIT EXITCOMMIT EXIT 終了動作

ON

ON

-

COMMIT

ON

OFF

-

COMMIT

OFF

ON

-

COMMIT

OFF

OFF

-

ROLLBACK

ON

ON

COMMIT

COMMIT

ON

ON

ROLLBACK

COMMIT

ON

OFF

COMMIT

COMMIT

ON

OFF

ROLLBACK

COMMIT

OFF

ON

COMMIT

COMMIT

OFF

ON

ROLLBACK

ROLLBACK

OFF

OFF

COMMIT

COMMIT

OFF

OFF

ROLLBACK

ROLLBACK

13.44.24 SET FEEDBACK

構文

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

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

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

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

ONLYは、データを表示せずに問合せで選択された行数を戻します。

SQL_IDは、実行されたSQL文またはPL/SQL文のsql_idを返します。sql_idが事前定義済変数_SQL_IDに割り当てられます。この事前定義済変数を使用して、実行されたSQL文をデバッグできます。変数は、_USERおよび_DATEなど、他の事前定義済の変数のように使用できます。

SQL> SET FEEDBACK ON SQL_ID
SQL> SELECT * FROM DUAL;  

D 
- 
X  

1 row selected.  

SQL_ID: a5ks9fhw2v9s1 
SQL> COLUMN sql_text FORMAT a50 
SQL> SELECT sql_text FROM v$sql WHERE sql_id = '&_sql_id';  

SQL_TEXT 
----------------------------------------------------- 
SELECT * FROM DUAL  

1 row selected.  

SQL_ID: cf9bgxbfytv5b

SQL_IDオプションが指定され、フィードバックがONになっている場合、フィードバック・メッセージとともにSQL IDが表示されます。フィードバックがOFFの場合、SQL IDのみが表示されます。

SET FEEDBACK ONLYを有効にするには、次のように入力します。

SQL> SET FEEDBACK ONLY
SQL> SHOW FEEDBACK
feedback ONLY
SQL> SELECT * FROM EMP;

14 rows selected.

SET_FEEDBACKおよびSQL_IDを有効にするには、次のように入力します

SQL> SET FEEDBACK ON SQL_ID
SQL> SELECT * FROM DEPT; 

DEPTNO DNAME LOC 
-------------- ------------------- ---------------------             
 	10 ACCOUNTING NEW YORK              
	20 RESEARCH DALLAS              
	30 SALES CHICAGO              
	40 OPERATIONS BOSTON  

4 rows selected. 

SQL_ID: 3154rqzb8xudy 
SQL> CONNECT SYSTEM 
ENTER PASSWORD: 
Connected. 
SQL> COLUMN sql_text FORMAT a50 
SQL> SELECT sql_text FROM v$sql WHERE sql_id = '&_sql_id';

SQL_TEXT 
------------------------------------------------------------- 
SELECT * FROM DEPT  

1 row selected.  
SQL_ID: 81a5n8q6g2vvr 

13.44.25 SET FLAGGER

構文

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

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はこれらのコマンドに対してアラートを表示します。

13.44.26 SET FLUSH

構文

SET FLU[SH] {ON | OFF}

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

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

13.44.27 SET HEADING

構文

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

13.44.28 SET HEADSEP

構文

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

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

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

13.44.29 SET HISTORY

構文

SET HIST[ORY] {ON | OFF | n}

コマンドの履歴を有効または無効にします。有効にした場合、SQL*Plus文、SQL文およびPL/SQL文はコマンド履歴リストに格納されます。HISTORYコマンドを使用することで、SQL*Plus文、SQL文およびPL/SQL文をリコールできます。

コマンド履歴を有効にしてリストに200件のエントリを格納するには、次のように入力します。

SET HIST[ORY] 200

nの値を指定しない場合、デフォルトは100となります。

ノート:

PL/SQLブロックなどの複数行のエントリは、コマンド履歴リストでは1つのエントリと見なされます。コマンド履歴には最大100000個のコマンドを格納できます。すでに有効となっているコマンド履歴を有効にしようとした場合、古いコマンド履歴がクリアされます。

13.44.30 SET INSTANCE

構文

SET INSTANCE [instance_path | LOCAL]

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

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

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

13.44.31 SET JSONPRINT

構文

SET JSONPRINT [NORMAL] [PRETTY] [ASCII]

JSON型の列の出力を書式設定します。

リリース21c以降では、JSONは、JSONデータ用のSQLおよびPL/SQLの新しいデータ型です。JSONの詳細は、JSONのスタート・ガイドを参照してください。

PRETTYは、適切な位置合せおよび間隔で書式設定されたJSON出力を表示します。

ASCIIは、非ASCII文字をUnicodeエスケープ・シーケンスとして表示します。

NORMALは、デフォルト値で、PRETTYパラメータとASCIIパラメータがクリアされます。

JSONデータの整形印刷を有効にするには、次のように入力します。

SQL> set jsonprint pretty
SQL> show jsonprint
jsonprint PRETTY

SQL> select json('[{a:"\u20ac"},{b:"value"}]') from dual;
JSON('[{A:"\U20AC"},{B:"VALUE"}]')
-----------------------------------------------------------------
---------------
[
 {
 "a" : "€"
 },
 {
 "b" : "value"
 }
]

結果にはASCII以外の文字があります。ASCIIが有効になっている場合、出力は次のようになります。

SQL> set jsonprint pretty ascii
SQL> show jsonprint
jsonprint PRETTY ASCII

SQL> select json('[{a:"\u20ac"},{b:"value"}]') from dual;
JSON('[{A:"\U20AC"},{B:"VALUE"}]')
-----------------------------------------------------------------
---------------
[
 {
 "a" : "\u20AC"
 },
 {
 "b" : "value"
 }
]

13.44.32 SET LINESIZE

構文

SET LIN[ESIZE] {80 | n | WINDOW}

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

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

WINDOWによって、画面の幅と高さに応じた書式設定された出力にあわせて行サイズとページサイズが調整されます。出力が画面の幅を超えている場合、出力は対応して折り返されます。

画面サイズがSET LINESIZE nコマンドを使用して手動で設定されている場合、後続の出力は新しい行サイズにあわせて表示されます。

ノート:

SET LINESIZE WINDOWコマンドは、スクリプトに無視され、出力は画面のサイズに応じては表示されません。

出力の行サイズを20に設定するには、次のように入力します

SQL> SET LINESIZE 20
SQL> SHOW LINESIZE
linesize 20

画面を手動でサイズ変更した後に出力表示を動的に変更するには、次のように入力します

SQL> SET LINESIZE Window
SQL> SHOW LINESIZE
linesize 160 WINDOW

13.44.33 SET LOBOFFSET

構文

SET LOBOF[FSET] {1 | n}

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

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

SET LOBOFFSET 22

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

13.44.34 SET LOBPREFETCH

構文

SET LOBPREFETCH {0 | n}

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

プリフェッチされるLOBデータの量を8000バイトに設定するには、次のように入力します。

SET LOBPREFETCH 8000

nの値を指定しない場合、デフォルトは0となります。つまり、LOBデータのプリフェッチはオフとなります。

ノート:

指定できる最大値は2147483648バイト(2 GB)です。oraaccess.xmlファイル内の設定により、SQL*PlusにおけるSET LOBPREFETCHの設定をオーバーライドできます。oraaccess.xmlの詳細は、Oracle Call Interfaceプログラマーズ・ガイドを参照してください。

SQL*Plusがデータベースから一度にプリフェッチするLOBデータの量について現在の設定を表示するには、次のように入力します。

SHOW LOBPREF[ETCH]

13.44.35 SET LOGSOURCE

構文

SET LOGSOURCE [pathname]

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

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

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

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

13.44.36 SET LONG

構文

SET LONG {80 | n}

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

Oracle Databaseリリース21c以降では、JSONPRINTSET LONGを使用して、JSON値を表示するための最大幅を設定できます。

SET LONGCHUNKSIZEコマンドの値に関係なく、LONG列の問合せには、SET LONGで指定されたデータの量を格納するための十分なローカル・メモリーが必要です。この要件は、LOBの問合せには適用されません。

LONG列を含む表は、作成しないことをお薦めします。LONG列は、下位互換性のためにのみサポートされています。かわりにLOB列(BLOB、BFILE、CLOB、NCLOB)を使用してください。LOB列は、LONG列より制限が少なく、現在でも機能が拡張されています。

nの最大値は2,000,000,000バイトです。SET LONGコマンドの実行に必要なメモリーがマシンで使用可能かどうかを、次のようにチェックすることが重要です。

SET LONG 2000000000

この例の場合は、マシンで使用可能なRAM(ランダム・アクセス・メモリー)が2GBを超えていることが必要です。

LONG値を表示およびコピーするためにフェッチする最大バイト数を500に設定するには、次のように入力します。

SET LONG 500

LONGデータは、画面上で折り返されます。SQL*Plusは、501バイト目から切捨てを行います。LONGのデフォルト値は80バイトです。

13.44.37 SET LONGCHUNKSIZE

構文

SET LONGC[HUNKSIZE] {80 | n}

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

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

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

SET LONGCHUNKSIZE 100

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

13.44.38 SET MARKUP

構文

SET MARK[UP] markup_option

markup_optionの構成は、次のとおりです。

  • csv_option

  • html_option

csv_optionの構文は、次のとおりです。

CSV {ON|OFF} [DELIMI[TER] character] [QUOTE {ON|OFF}]

html_optionの構文は、次のとおりです。

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

csv_option

レポートをCSV形式で出力します。

有効にするには、動的レポート出力の値を変更するSET MARKUPコマンドを、問合せ出力を生成する文の前に発行する必要があります。問合せ出力を生成する最初の文によって、DELIMITERおよびQUOTEの設定を反映したCSVデータの出力がトリガーされます。

CSVは、生成される出力タイプをCSVに指定するSET MARKUPの必須引数です。CSV引数ONおよびOFFは、CSV出力を生成するかどうかを指定します(オプション)。デフォルトはOFFです。

CSV出力のONおよびOFFは、セッション中、必要に応じて切り替えることができます。

DELIMI[TER] character

DELIMI[TER] characterオプションにより、列セパレータ文字を指定できます。

QUOTE {ON|OFF}

QUOTE {ON|OFF}オプションにより、テキストに対する引用符の付加のオンとオフを切り替えることができます。デフォルトはOFFです。

QUOTE ONにすると、すべてのテキストに引用符が付加された状態でCSV出力が生成されます。テキストに埋め込まれた二重引用符(" ")はエスケープされます。

引用符が付加されたテキストのONおよびOFFは、セッション中、必要に応じて切り替えることができます。

SET MARKUP CSVが有効な場合にサポートされているコマンド

SET MARKUP CSVが有効な場合、次のCOLUMNコマンドは有効なままとなります。

  • COLUMN FORMAT

  • COLUMN HEADING

  • COLUMN NULL

SET MARKUP CSVが有効な場合にサポートされていないコマンド

SET MARKUP CSVが有効な場合、次のSQL*Plusコマンドは出力において有効となりません。

SET MARKUP CSVが有効な場合、次のSETコマンドは出力において有効となりません。

SET MARKUP CSVが有効な場合、次のCOLUMNコマンドは出力において有効となりません。

  • COLUMN ENTMAP

  • COLUMN FOLD_AFTER

  • COLUMN FOLD_BEFORE

  • COLUMN JUSTIFY

  • COLUMN NEWLINE

  • COLUMN NEW_VALUE

  • COLUMN NOPRINT

  • COLUMN OLD_VALUE

  • COLUMN WRAP

MARKUPオプションの状態を表示するには、SHOW MARKUPコマンドを使用します。

次の例は、SET MARKUP CSVが有効な場合の出力を示しています。

SQL> SET MARKUP CSV ON
SQL> SELECT * FROM EMP;

"EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO"
7369,"SMITH","CLERK",7902,"17-DEC-80",800,,20
7499,"ALLEN","SALESMAN",7698,"20-FEB-81",1600,300,30
7521,"WARD","SALESMAN",7698,"22-FEB-81",1250,500,30
7566,"JONES","MANAGER",7839,"02-APR-81",2975,,20
7654,"MARTIN","SALESMAN",7698,"28-SEP-81",1250,1400,30
7698,"BLAKE","MANAGER",7839,"01-MAY-81",2850,,30
7782,"CLARK","MANAGER",7839,"09-JUN-81",2450,,10
7788,"SCOTT","ANALYST",7566,"19-APR-87",3000,,20
7839,"KING","PRESIDENT",,"17-NOV-81",5000,,10
7844,"TURNER","SALESMAN",7698,"08-SEP-81",1500,0,30
7876,"ADAMS","CLERK",7788,"23-MAY-87",1100,,20
7900,"JAMES","CLERK",7698,"03-DEC-81",950,,30
7902,"FORD","ANALYST",7566,"03-DEC-81",3000,,20
7934,"MILLER","CLERK",7782,"23-JAN-82",1300,,10

14 rows selected.

次の例は、テキスト文字列に引用符を付加せずに、データベースの従業員表からすべてのレコードを抽出する方法を示しています。

SQL> SET MARKUP CSV ON QUOTE OFF 
SQL> SELECT * FROM EMP;

EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO
7369,SMITH,CLERK,7902,17-DEC-80,800,,20
7499,ALLEN,SALESMAN,7698,20-FEB-81,1600,300,30
7521,WARD,SALESMAN,7698,22-FEB-81,1250,500,30
7566,JONES,MANAGER,7839,02-APR-81,2975,,20
7654,MARTIN,SALESMAN,7698,28-SEP-81,1250,1400,30
7698,BLAKE,MANAGER,7839,01-MAY-81,2850,,30
7782,CLARK,MANAGER,7839,09-JUN-81,2450,,10
7788,SCOTT,ANALYST,7566,19-APR-87,3000,,20
7839,KING,PRESIDENT,,17-NOV-81,5000,,10
7844,TURNER,SALESMAN,7698,08-SEP-81,1500,0,30
7876,ADAMS,CLERK,7788,23-MAY-87,1100,,20
7900,JAMES,CLERK,7698,03-DEC-81,950,,30
7902,FORD,ANALYST,7566,03-DEC-81,3000,,20
7934,MILLER,CLERK,7782,23-JAN-82,1300,,10

14 rows selected.

次の例は、パイプ( | )文字がデリミタとして指定された出力を示しています。

SQL> SET MARKUP CSV ON DELIMITER | 
SQL> SELECT * FROM EMP;

EMPNO|ENAME|JOB|MGR|HIREDATE|SAL|COMM|DEPTNO
7369|SMITH|CLERK|7902|17-DEC-80|800||20
7499|ALLEN|SALESMAN|7698|20-FEB-81|1600|300|30
7521|WARD|SALESMAN|7698|22-FEB-81|1250|500|30
7566|JONES|MANAGER|7839|02-APR-81|2975||20
7654|MARTIN|SALESMAN|7698|28-SEP-81|1250|1400|30
7698|BLAKE|MANAGER|7839|01-MAY-81|2850||30
7782|CLARK|MANAGER|7839|09-JUN-81|2450||10
7788|SCOTT|ANALYST|7566|19-APR-87|3000||20
7839|KING|PRESIDENT||17-NOV-81|5000||10
7844|TURNER|SALESMAN|7698|08-SEP-81|1500|0|30
7876|ADAMS|CLERK|7788|23-MAY-87|1100||20
7900|JAMES|CLERK|7698|03-DEC-81|950||30
7902|FORD|ANALYST|7566|03-DEC-81|3000||20
7934|MILLER|CLERK|7782|23-JAN-82|1300||10

14 rows selected.

html_option

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オプション」を参照してください。使用例については、SQL*Plusからのレポートの生成を参照してください。

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を表示できます。次のように表示されるはずです。

13.44.39 SET NEWPAGE

構文

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

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

13.44.40 SET NULL

構文

SET NULL text

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

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

13.44.41 SET NUMFORMAT

構文

SET NUMF[ORMAT] format

数値を表示するためのデフォルトの書式を設定します。数値書式の詳細は、「COLUMN」コマンドのFORMAT句を参照してください。formatに、数値書式を入力します。SET NUMWIDTHで指定されたデフォルトのフィールド幅と書式設定モデルを使用するには、次のように入力します。

SET NUMFORMAT "" 

13.44.42 SET NUMWIDTH

構文

SET NUM[WIDTH] {10 | n}

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

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

13.44.43 SET PAGESIZE

構文

SET PAGES[IZE] {14 | n}

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

13.44.44 SET PAUSE

構文

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

レポートの実行中に端末のスクロール制御を実現します。SQL*Plusが一時停止するたびにテキストを表示する場合は、SET PAUSE textを指定した後で、SET PAUSE ONを指定します。

SET PAUSE ONは各PAGESIZEで指定した行数の各レポートの出力開始時に出力を一時停止します。以降の出力を表示するには、[Return]を押します。SET PAUSE textには、SQL*Plusが一時停止するたびに表示するテキストを指定します。テキストに複数の語を含める場合は、textを引用符で囲む必要があります。

端末固有のエスケープ・シーケンスをPAUSEコマンドの中に入れることができます。このようなシーケンスを使用すると、反転表示などの効果を持つメッセージを端末上に作成できます。

13.44.45 SET RECSEP

構文

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

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

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

13.44.46 SET RECSEPCHAR

構文

SET RECSEPCHAR {  | c}

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

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

13.44.47 SET ROWLIMIT

構文

SET ROWLIMIT {n | OFF}

問合せに対して表示する行数の制限を設定します。デフォルトでは、ROWLIMITはOFFになっています。

nには1 - 2,000,000,000の任意の数値を指定できます。入力された値がこの範囲内でない場合には、エラーが表示されます。

OFFを指定すると、出力のすべての行が表示されます。

SET ROWLIMITは、SET FEEDBACKコマンドで設定した値を無視します。

SET ROWLIMITコマンドは、多くの行数を返す問合せの場合に便利です。ユーザーは問合せを変更せずに表示する行数を制限できます。

SET ROWLIMITコマンドの目的は、問合せのパフォーマンスを向上させることではなく、表示する行を制限することです。データベースからフェッチされる行数は、SET ARRAYSIZE値によって決定されます。このため、サーバーはROWLIMITで設定された値を超える行を返す場合があります。制限を超えた行が返されると、問合せは終了し、サーバーからそれ以上データをフェッチしません。たとえば、表を問い合せるSQL文に100行が含まれているが、ROWLIMITは10に設定されており、ARRAYSIZEは15に設定されているとします。問合せが実行されると、15行が最初にデータベースからフェッチされます。返された行がROWLIMIT設定に到達しているため、これ以上フェッチせずに問合せは終了します。ただし、ROWLIMITが20に設定されている場合、ROWLIMIT設定に到達させるために次の15行をフェッチする2回目のラウンドトリップが必要となります。

表示される行数を2に設定するには、次のように入力します。

SQL> SET ROWLIMIT 2
SQL> SHOW ROWLIMIT
rowlimit 2

SQL> SELECT * FROM DEPT;

DEPTNO  DNAME	       
------  ----------- 
10      ACCOUNTING	
20      RESEARCH	  

2 rows selected. (rowlimit reached)

デフォルトでは、FEEDBACKメッセージは10行が表示された後にのみ表示されますが、ROWLIMITが2に設定されている場合、FEEDBACKが10に設定されていても、2行のFEEDBACKメッセージが表示されます。

SQL> SET FEEDBACK 10
SQL> SET ROWLIMIT 2
SQL> SELECT * from EMP;

2 rows selected. (rowlimit reached)  

13.44.48 SET ROWPREFETCH

構文

SET ROWPREFETCH {1 | n}

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

デフォルト値は1です。

プリフェッチされる行数を200に設定するには、次のように入力します。

SET ROWPREFETCH 200

nの値を指定しない場合、デフォルトは1行となります。つまり、行のプリフェッチはオフとなります。

ノート:

プリフェッチされた行に含まれるデータの量が、最大値2147483648バイト(2 GB)を超えないようにしてください。oraaccess.xmlファイル内の<prefetch>の設定により、SQL*PlusにおけるSET ROWPREFETCHの設定をオーバーライドできます。oraaccess.xmlの詳細は、Oracle Call Interfaceプログラマーズ・ガイドを参照してください。

SQL*Plusがデータベースから一度にプリフェッチする行の数について現在の設定を表示するには、次のように入力します。

SHOW ROWPREF[ETCH]

13.44.49 SET SECUREDCOL

構文

SET SECUREDCOL {OFF | ON} [UNAUTH[ORIZED] text] [UNK[NOWN] text]

SQLPLUS出力で、セキュアな列値を、列を表示する権限のないユーザーおよびセキュリティが不明の列に対して表示する方法を設定します。デフォルト・テキストを選択するか、表示するテキストを指定できます。デフォルトはOFFです。

列レベルのセキュリティが有効で、SET SECUREDCOLがONに設定されている場合、セキュアな列または不明なセキュリティ・レベルの列に対するSQLPLUSからの出力は、カスタマイズしたテキストまたはデフォルトのインジケータで置き換えられます。これは、スカラー・データ型にのみ適用されます。複合オブジェクト・データ出力には影響ありません。

ONを指定すると、認可のないユーザーの列値のかわりに*****、セキュリティ・レベルが不明な列値のかわりに?????が表示されます。定義されている列長または現在のCOLUMNコマンドで定義した列長に合せて*および?が埋め込まれます。

OFFを指定すると、認可のないユーザーの列値およびセキュリティ・レベルが不明な列値のかわりにNULL値が表示されます。

UNAUTH[ORIZED]テキストでは、認可のないユーザーに対してセキュアな列に表示するテキストを指定できます。このテキストは、デフォルトの*****のかわりに表示されます。

列長以内または30文字以内の任意の英数字テキストを指定できます。これより長いテキストは切り捨てられます。空白を含むテキストは、引用符で囲む必要があります。

UNK[NOWN]テキストでは、セキュリティ・レベルが不明の列に表示するテキストを指定できます。このテキストは、デフォルトの??????のかわりに表示されます。

列長以内または30文字以内の任意の英数字テキストを指定できます。これより長いテキストは切り捨てられます。空白を含むテキストは、引用符で囲む必要があります。

SET SECUREDCOL ON
SELECT empno, ename, sal FROM emp ORDER BY deptno;
EMPNO ENAME  DEPTNO SAL
 7539 KING   10     ********
 7369 SMITH  20          800
 7566 JONES  20         2975
 7788 SCOTT  20         3000
 7521 WARD   30     ********
 7499 ALLEN  30     ********
SET SECUREDCOL ON UNAUTH notallow
SELECT empno, ename, sal FROM emp ORDER BY deptno;
EMPNO ENAME  DEPTNO SAL
 7539 KING   10    notallow
 7369 SMITH  20          800
 7566 JONES  20         2975
 7788 SCOTT  20         3000
 7521 WARD   30     notallow
 7499 ALLEN  30     notallow

13.44.50 SET SERVEROUTPUT

構文

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 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 XAでのアプリケーションの開発」を参照してください。

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

13.44.51 SET SHIFTINOUT

構文

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

シフト文字を表示する端末に適した位置合せを実現します。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

「:」は、マルチバイト文字を表すシフト大文字です。

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

13.44.52 SET SHOWMODE

構文

SET SHOW[MODE] {ON | OFF}

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

13.44.53 SET SQLBLANKLINES

構文

SET SQLBL[ANKLINES] {ON | OFF}

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

13.44.54 SET SQLCASE

構文

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

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

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

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

13.44.55 SET SQLCONTINUE

構文

SET SQLCO[NTINUE] {> | text}

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

感嘆符とそれに続く1個の空白をSQL*Plusコマンド継続プロンプトとして設定するには、次のように入力します。

SET SQLCONTINUE '! '

SQL*Plusは、継続のプロンプトを次のように表示します。

TTITLE 'MONTHLY INCOME' -
! RIGHT SQL.PNO SKIP 2 -
! CENTER 'PC DIVISION'

継続プロンプトのデフォルトは「>」です。

13.44.56 SET SQLNUMBER

構文

SET SQLN[UMBER] {ON | OFF}

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

13.44.57 SET SQLPLUSCOMPATIBILITY

構文

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 12.2をスクリプトに追加して、SQL*Plusの将来のバージョンとの互換性を高めることをお薦めします。

13.44.57.1 SQL*Plus互換性マトリックス

SQL*Plus互換性マトリックスに、各SQL*Plusの互換性の設定によって影響を受ける動作を示します。SQL*Plusの互換性モードは、3つの方法で設定できます。

  • SET SQLPLUSCOMPATIBILITYコマンドを、サイトまたはユーザーのプロファイル内に含めることができます。インストール時には、glogin.sqlにSET SQLPLUSCOMPATIBILITY設定はありません。したがって、デフォルトの互換性は12.2です。

  • 起動時に、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です。

表13-6 互換性マトリックス

結果 使用可能なバージョン

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

13.44.58 SET SQLPREFIX

構文

SET SQLPRE[FIX] {# | c}

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

13.44.59 SET SQLPROMPT

構文

SET SQLP[ROMPT] {SQL> | text}

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

13.44.60 SET SQLTERMINATOR

構文

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

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

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

13.44.61 SET STATEMENTCACHE

構文

SET STATEMENTC[ACHE] {0 | n}

文キャッシュ・サイズを設定します。キャッシュの値を指定すると、繰り返される文のキャッシュが可能になります。したがって、これらの文は再度解析する必要がないため、パフォーマンスが向上します。

文キャッシュ・サイズを15に設定するには、次のように入力します。

SET STATEMENTCACHE 15

nの値を指定しない場合、デフォルトは0となります。つまり、文キャッシュはオフとなります。

文キャッシュ・サイズには、0から32767の範囲の値を指定できます。

ノート:

Oracle Database初期化ファイルinit.oraのオープン・カーソル・パラメータに指定された値未満のキャッシュ・サイズを指定します。値0を指定すると、文キャッシュがオフになります。oraaccess.xmlファイル内の<statement_cache>の設定により、SQL*PlusにおけるSET STATEMENTCACHEの設定をオーバーライドできます。oraaccess.xmlの詳細は、Oracle Call Interfaceプログラマーズ・ガイドを参照してください。

文キャッシュ・サイズの現在の設定を表示するには、次のように入力します。

SHOW STATEMENTC[ACHE]

13.44.62 SET SUFFIX

構文

SET SUF[FIX] {SQL | text}

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

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

SET SUFFIX TXT

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

GET EXAMPLE

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

13.44.63 SET TAB

構文

SET TAB {ON | OFF}

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

13.44.64 SET TERMOUT

構文

SET TERM[OUT] {ON | OFF}

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

13.44.65 SET TIME

構文

SET TI[ME] {ON | OFF}

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

13.44.66 SET TIMING

構文

SET TIMI[NG] {ON | OFF}

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

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

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

タイミング統計の書式は、オペレーティング・システムによって異なります。LinuxおよびWindowsでは、タイミング統計は24時間形式で、時間、分、秒および100分の1秒を表示します。

SET SUFFIX TXT

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

GET EXAMPLE

SQL*Plusは次のような出力を表示します。

GET EXAMPLE

13.44.67 SET TRIMOUT

構文

SET TRIM[OUT] {ON | OFF}

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

13.44.68 SET TRIMSPOOL

構文

SET TRIMS[POOL] {ON | OFF}

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

13.44.69 SET UNDERLINE

構文

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

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

13.44.70 SET VERIFY

構文

SET VER[IFY] {ON | OFF}

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

13.44.71 SET WRAP

構文

SET WRA[P] {ON | OFF}

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

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

13.44.72 SET XMLOPTIMIZATIONCHECK

構文

SET XMLOPT[IMIZATIONCHECK] [ON|OFF]

完全に最適化されたXML問合せおよびDML操作のみを実行するかどうかを制御します。ONを指定すると、XML問合せまたはDML操作を完全に最適化できない場合にその実行を抑止し、その理由がトレース・ファイルに書き込まれます。OFFを指定すると、このような問合せおよび操作の実行を抑止しません。デフォルトはOFFです。

SET XMLOPT[IMIZATIONCHECK] ONは、XML問合せまたはDML操作の開発中やデバッグの作業中にのみ使用してください。

13.44.73 SET XQUERY BASEURI

構文

SET XQUERY BASEURI {text}

ファンクション内の相対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

13.44.74 SET XQUERY ORDERING

構文

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
/

13.44.75 SET XQUERY NODE

構文

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
/

13.44.76 SET XQUERY CONTEXT

構文

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