C 廃止されたSQL*Plusコマンド

ここでは、一部のSQL*Plusコマンドの旧バージョンについて説明します。これらの旧コマンドは、これまで同様にSQL*Plusで動作しますが、現在はサポートされていません。かわりに、次の表に示すSQL*Plusコマンドを使用することをお薦めします。

C.1 SQL*Plusで廃止されたコマンドとその代替コマンド

廃止されたコマンドは、現行リリースのSQL*Plusで使用可能です。今後のリリースでは、SQLPLUSCOMPATIBILITY変数を設定した場合のみ、使用可能になる予定です。代替コマンドを使用するには、廃止されたコマンドを使用して、スクリプトを変更する必要があります。

廃止されたコマンド 代替コマンド 代替コマンドの説明
BTITLE (old form)
BTITLE

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

COLUMN DEFAULT
COLUMN CLEAR

列の表示属性をデフォルトにリセットします。

DOCUMENT
REMARK

SQL*Plusがコマンドとして解釈しないようにコメントを付けます。

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

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

SET BUFFER
EDIT

SQL*Plusコマンド・バッファ、または保存されたファイルの内容を編集できます。外部ファイルの作成および使用には、SQL*PlusのSAVE、GET、@およびSTARTコマンドを使用します。

SET COMPATIBILITY
none

廃止

SET CLOSECURSOR
none

廃止

SET DOCUMENT
none

廃止

SET MAXDATA
none

廃止

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

接頭辞の置換変数に使用される文字を設定します。

SET SPACE
SET COLSEP {  | text}

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

SET TRUNCATE
SET WRA[P] {ON | OFF}

SELECTによって選択された行が長すぎてカレント行の幅に収まらない場合に、その行をSQL*Plusで切り捨てるかどうかを制御します。

SHOW LABEL
none

廃止

TTITLE (old form)
TTITLE

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

C.2 BTI[TLE] テキスト(旧形式は廃止)

それぞれのレポート・ページの下部にタイトルを表示します。

旧形式のBTITLEコマンドは、書式設定機能に関しては、新形式と比べると制限されていますが、UFI(SQL*Plusの前身)との互換性を提供します。旧形式で定義される下部タイトルでは、空の行が1行入り、その後に中央揃えされたテキスト行が続きます。詳細は、「TTI[TLE] text(旧形式は廃止)」を参照してください。

C.3 COL[UMN] {|expr} DEF[AULT] (廃止)

特定の列の表示属性をデフォルト値にリセットします。

COLUMN CLEARと同じ働きをします。

C.4 DOC[UMENT] (廃止)

スクリプト内のドキュメントのブロックを開始します。

スクリプトにコメントを挿入するための現行の方法については、スクリプトへのコメントの挿入についておよびREMARKコマンドを参照してください。

DOCUMENTを入力し[Return]を押すと、SQL*Plusでは、ドキュメントを終了するまで、「SQL>」のかわりに「DOC>」が表示されます。ドキュメントは、シャープ記号(#)のみが単独で入っている行で終わります。

DOCUMENTをOFFに設定した場合、SQL*Plusは、DOCUMENTコマンドで作成したドキュメントのブロックを表示しません。詳細は、「SET DOC[UMENT] {ON|OFF}(廃止)」を参照してください。

C.5 NEWPAGE [1|n] (廃止)

n行文のスプール出力を、次のページの先頭より先へ進めます。

スプール出力でのページ間隔を決める現行の方法については、「SET NEWP[AGE] {1 | n | NONE}」を参照してください。

C.6 SET BUF[FER] {バッファ|SQL} (廃止)

指定したbufferを現行バッファにします。

最初は、SQLバッファが現行バッファです。SQL*Plusでは、複数のバッファを使用する必要はありません。SQLバッファのみで要件が満たされます。

入力したバッファが存在しない場合、SET BUFFERは、そのバッファを定義(作成および命名)します。SQL*Plusを終了すると、SQL*Plusは、バッファおよびその内容を削除します。

問合せを実行すると、SQLバッファは、自動的に現行バッファになります。バッファから別のバッファへテキストをコピーするには、GETおよびSAVEコマンドを使用します。現行バッファからテキストを消去するには、CLEAR BUFFERを使用します。別のバッファを使用しているときにSQLバッファからテキストを消去するには、CLEAR SQLを使用します。

C.7 SET COM[PATIBILITY]{V7 | V8 | NATIVE} (廃止)

使用する構文を解析するSQL言語のバージョンを指定します。

COMPATIBILITYは、Oracle7の場合はV7に、Oracle8以上の場合はV8に設定します。COMPATIBILITYのデフォルトは、常にNATIVEです。そうでない場合は、COMPATIBILITYを、接続先のデータベースで使用するOracle DatabaseのSQL構文のバージョンに合せて設定します。

デフォルトの互換性設定であるNATIVEは、最新のOracle Databaseに最も適した設定です。

SQL*Plusバージョンの互換性設定の詳細は、SET SQLPLUSCOMPAT[IBILITY] {x.y[.z]}を参照してください。

Oracle7のSQL構文で作成されたスクリプトSALARY.SQLを実行するには、次のように入力します。

SET COMPATIBILITY V7
START SALARY

このファイルを実行した後で、Oracle Database 10g用に作成されたスクリプトを実行するために互換性をNATIVEにリセットするには、次のように入力します。

SET COMPATIBILITY NATIVE

これ以外の方法として、スクリプトの最初にコマンドSET COMPATIBILITY V7を追加し、ファイルの終わりでCOMPATIBILITYをNATIVEにリセットすることもできます。

C.8 SET CLOSECUR[SOR] {ON|OFF} (廃止)

カーソル使用動作を設定します。

カーソルが、それぞれのSQL文の後でクローズおよび再オープンするかどうかを、ONまたはOFFで設定します。環境によっては、この機能が、データベース・サーバーのリソースを解放する際に有効な場合もあります。

C.9 SET DOC[UMENT] {ON|OFF} (廃止)

DOCUMENTコマンドで作成したドキュメントのブロックを表示または非表示にします。

SET DOCUMENT ONを指定すると、ドキュメントのブロックが画面にエコー表示されます。SET DOCUMENT OFFを指定すると、ドキュメントのブロックを非表示にします。

DOCUMENTコマンドについては、「DOC[UMENT](廃止)」を参照してください。

C.10 SET MAXD[ATA] n (廃止)

SQL*Plusが処理できる最大行幅を設定します。

現在、SQL*Plusでは、最大行幅は制限されていません。SQL*Plusは、SET MAXDATAを使用して設定した値を無視します。

C.11 SET SCAN {ON|OFF} (廃止)

置換変数およびパラメータの存在確認のためのスキャンを制御します。OFFを指定すると、置換変数およびパラメータの処理を行わず、ONを指定すると、通常の処理ができます。

ONを指定すると、SET DEFINE ONと同じ機能が得られます。

C.12 SET SPACE {1|n} (廃止)

出力内の列間の空白数を設定します。nの最大値は10です。

SET SPACE 0コマンドの機能は、SET COLSEPコマンドと同じです。このコマンドは、SET COLSEPに置き換えられましたが、下位互換性のためにまだ使用できます。SHOWコマンドを使用すると、COLSEPは認識しますがSPACEは認識しないので、COLSEPを使用する方が便利です。

C.13 SET TRU[NCATE] {ON|OFF} (廃止)

SQL*Plusが、カレント行の幅に収まらないデータ項目を切り捨てるか折り返すかを制御します。

ONは、SET WRAP OFFと同じ働きをし、OFFは逆の働きをします。SHOWコマンドを使用すると、WRAPは認識しますがTRUNCATEは認識しないので、WRAPを使用する方が便利です。

C.14 TTI[TLE] テキスト (旧形式は廃止)

それぞれのレポート・ページの上部にタイトルを表示します。

旧形式のTTITLEコマンドは、書式設定機能に関しては、新形式と比べると制限されていますが、UFI(SQL*Plusの前身)との互換性を提供します。旧形式で定義される上部タイトルは、最初の行に日付が左揃えで、ページ番号が右揃えで入り、次に、中央揃えのテキストを含む行が続き、最後に空白行が1行入ります。

TTITLEは、ユーザーが入力するtextをタイトルとして表示します。

SQL*Plusは、SET LINESIZEが決める行サイズに基づいてテキストを中央揃えにします。セパレータ文字(|)があると新しい行が始まります。行の中に2個のセパレータ文字(||)があると、空白行が1行挿入されます。行セパレータ文字は、SET HEADSEPで変更できます。

旧形式のTTITLEおよびBTITLEのページ番号の書式設定を制御するには、_pageという名前の変数を定義します。_pageのデフォルト値は、書式設定文字列page &P4です。書式を変更するには、次のように、新しい書式設定文字列を指定したDEFINE _pageを使用します。

SET ESCAPE / SQL> DEFINE _page = 'Page /&P2'

この書式設定文字列の場合、pageの頭文字が大文字で表示され、ページ番号の書式が2文字の幅に設定されます。pageは、すべてのテキストで置き換えることができ、幅は、すべての数値で置き換えることができます。SQL*Plusがアンパサンド(&)を置換変数と解釈しないように、エスケープを設定する必要があります。エスケープ文字を設定する方法の詳細は、SET ERRORL[OGGING] {ON | OFF} [TABLE [schema.]tablename] [TRUNCATE] [IDENTIFIER identifier]を参照してください。

コマンド名のすぐ後に有効な新形式の句が続いていない場合、SQL*Plusは、TTITLEを旧形式のコマンドと解釈します。

TTITLEとともにCENTERを使用して、1行に複数の語を入れるには、新形式のTTITLEを使用します。詳細は、「TTITLE」コマンドを参照してください。

旧形式のTTITLEを使用して、最初の行に左寄せの日付と右寄せのページ番号が示され、次の行にSALES DEPARTMENTが表示され、3番目の行にPERSONNEL REPORTが表示されるように上部タイトルを設定するには、次のように入力します。

TTITLE 'SALES DEPARTMENT|PERSONNEL REPORT'

C.15 PRODUCT_USER_PROFILE表について

ノート:

Oracle Database18c以降、SQL*Plus表PRODUCT_USER_PROFILE (PUP)表は非推奨です。

PRODUCT_USER_PROFILE (PUP)表の唯一の用途は、SQL*Plusの製品レベル・セキュリティを制御するメカニズムです。Oracle Database18c以降、このメカニズムは関連しません。このSQL*Plus製品レベルのセキュリティ機能は、Oracle Database19cでは使用できません。

Oracle Databaseの設定を使用してデータを保護し、すべてのクライアント・アプリケーション間で一貫したセキュリティを確保することをお薦めします。

SQL*Plusで、SYSTEMアカウント内の表の1つであるPRODUCT_USER_PROFILE(PUP)表を使用した製品レベルのセキュリティが提供されています。このセキュリティは、SQLのGRANTとREVOKEコマンドおよびユーザー・ロールによるユーザー・レベルのセキュリティを補います。

SQL*Plus環境では、DBAはPUP表を使用して、特定のSQLおよびSQL*Plusコマンドをユーザー単位で使用禁止にできます。Oracle DatabaseでなくSQL*Plusでこのセキュリティが実行されます。DBAは、GRANT、REVOKEおよびSET ROLEコマンドへのアクセスを制限して、ユーザーによる各自のデータベース権限の変更を制御することもできます。

SQL*Plusでは、ユーザーがSQL*Plusにログインすると、PUP表から制限が読み込まれ、セッションが終了するまでその制限が保持されます。PUP表の変更は、次に対象ユーザーがSQL*Plusにログインするときに有効になります。

SYSTEM、SYS、またはSYSBACKUP、SYSDBA、SYSDG、SYSKMまたはSYSOPER権限で認証するユーザーが接続またはログインする場合、SQL*PlusではPUP表は読み込まれません。そのため、これらのユーザーに制限は適用されません。

PUP表は、ローカル・データベースのみに適用されます。データベース・リンク経由でリモート・データベース上のオブジェクトにアクセスする場合、リモート・データベース用のPUP表は適用されません。リモート・データベースは、データベース・リンクからユーザー名およびパスワードを抽出して、ユーザー・プロファイルおよびユーザー権限を維持することはできません。

C.15.1 PUP表の作成について

PUP表を作成するには、拡張子がSQLのPUPBLDという名前のスクリプトを、SYSTEMで実行します。ファイル拡張子の正確な形式およびファイルの位置は、システムによって異なります。詳細は、DBAに問い合せてください。

ノート:

表の作成に誤りがある場合は、権限が付与されたユーザー以外のすべてのユーザーがOracle Databaseに接続するときに、PUP表の情報がロードされていないというアラートが表示されます。

C.15.2 PUP表の構造

PUP表には、次の列が含まれています。

PRODUCT                 NOT NULL VARCHAR2 (30)
USERID                  VARCHAR2(30)
ATTRIBUTE               VARCHAR2(240)
SCOPE                   VARCHAR2(240)
NUMERIC_VALUE           NUMBER(15,2)
CHAR_VALUE              VARCHAR2(240)
DATE_VALUE              DATE
LONG_VALUE              LONG

C.15.3 PUP列の説明および使用方法

次に、PUP表の各列について説明します。

PUP列 説明

PRODUCT

製品名(この場合はSQL*Plus)が含まれている必要があります。この列には、ワイルド・カードまたはNULLは入力できません。

USERID

コマンドを使用禁止にする対象ユーザーのユーザー名(大文字)が含まれている必要があります。複数のユーザーのコマンドを使用禁止にするには、SQLワイルド・カード(%)を使用するか、または複数のエントリを入力します。したがって、次のエントリはすべて有効です。

  • HR

  • CLASS1

  • CLASS%(名前がCLASSで始まるすべてのユーザー)

  • % (すべてのユーザー)

ATTRIBUTE

使用禁止にするSQL、SQL*PlusまたはPL/SQLコマンドの名前(大文字)が含まれている必要があります(たとえば、RUNなど)。ロールを使用禁止にする場合、文字列ROLESが含まれている必要があります。ワイルド・カードは入力できません。使用禁止にできるSQLおよびSQL*Plusコマンドのリストについては、「PUP表の管理」を参照してください。ロールを使用禁止にする方法については、ロールの作成および制御についてを参照してください。

SCOPE

使用されません。NULLを入力してください。他の製品では、特定のファイル制限またはその他のデータがこの列に格納されることがあります。

NUMERIC_VALUE

使用されません。NULLを入力してください。他の製品では、この列に数値が格納されることがあります。

CHAR_VALUE

SQL、SQL*PlusまたはPL/SQLコマンドを使用禁止にするには、文字列DISABLEDが含まれている必要があります。ロールを使用禁止にする場合は、使用禁止にするロールの名前が含まれている必要があります。ワイルド・カードは入力できません。ロールを使用禁止にする方法については、SQLPLUS -RESTRICTでのコマンドの使用禁止についてを参照してください。

DATE_VALUE

使用されません。NULLを入力してください。他の製品では、この列にDATE値が格納されることがあります。

LONG_VALUE

使用されません。NULLを入力してください。他の製品では、この列にLONG値が格納されることがあります。

C.15.4 PUP表の管理

ユーザー名SYSTEMのDBAは、PUP表を所有し、それに関するすべての権限を持っています。他のOracle Databaseのユーザー名では、この表に対してはSELECT権限のみを持つようになります。このアクセス権限を使用すると、ユーザー名に設定された制限およびPUBLICに設定された制限を表示できます。スクリプトPUPBLD.SQLを実行すると、PUP表に対するSELECT権限がPUBLICに付与されます。