ヘッダーをスキップ

Oracle Rdb SQLリファレンス・マニュアル リリース7.2 E06178-01 |
| 目次 | 索引

戻る | 次へ |

# 付録F
廃止されたSQL構文

この付録の内容は、次のとおりです。

- 非互換構文
  以前のバージョンのSQLで使用できた一部のSQL文は、異なる動作をするようになり、以前のバージョンと互換性がなくなりました。既存のアプリケーションを変更する必要があります。

- 廃止予定の構文
  以前のバージョンのSQLで使用できた一部のSQL文は、診断メッセージによって識別（フラグ付け）されるようになります。SQLでは、このような文は廃止予定の機能と呼ばれます。これらの文は、このリリースでは予期された動作をしますが、将来のバージョンのSQLではサポートされない可能性があります。アプリケーション内の廃止予定の構文は、新しい構文に置き換えてください。

- 識別子として廃止予定の予約語
  規定の予約語のいずれかが二重引用符（"）なしに識別子として使用されると、ANSI/ISO規格に準拠しない使用方法としてフラグが付けられ、廃止予定の機能を示すメッセージが表示されます。

- 記号の変更
  この項では、SQLで使用される記号に対する変更について説明します。

- 診断メッセージの抑制
  この項では、廃止予定の機能に関する診断メッセージを抑制する方法について説明します。

# F.1 非互換構文

次の項では、非互換構文について説明します。

## F.1.1 SCHEMAキーワードを含む非互換構文

1つのデータベースには複数のスキーマが含まれている場合があるため、次の互換性のない変更は、SCHEMAキーワードを含むSQL構文に適用されます。

### F.1.1.1 CREATE SCHEMAの非互換

データベースを作成する際のCREATE SCHEMA文の使用は、廃止予定です。CREATE SCHEMA文を使用してデータベースの物理属性（ルート・ファイル・パラメータなど）を指定すると、廃止予定の機能を示すメッセージが表示され、その文は以前のバージョンのSQLの場合と同様に解釈されます。

    SQL> CREATE SCHEMA PARTS SNAPSHOT IS ENABLED;
    %SQL-I-DEPR_FEATURE, Deprecated Feature: SCHEMA (meaning DATABASE)
    SQL>

ただし、データベースの物理属性を指定しない場合、CREATE SCHEMA文を使用するには、マルチスキーマ・ネーミングを有効にする必要があります。

    SQL> CREATE SCHEMA PARTS;
    %SQL-F-SCHCATMULTI, Schemas and catalogs may only be referenced with
    multischema enabled

マルチスキーマ・ネーミングを有効にすると、CREATE SCHEMA文によって、現在のカタログ内に新規スキーマが作成されます。

    SQL> ATTACH 'ALIAS Q4 FILENAME INVENTORY MULTISCHEMA IS ON';
    SQL> CREATE SCHEMA PARTS;
    SQL> SHOW SCHEMAS;
    Schemas in database with alias Q4
        RDB$SCHEMA
        PARTS

### F.1.1.2 SHOW SCHEMAの非互換

マルチスキーマ属性を持つデータベースにアタッチし、マルチスキーマ・ネーミングを有効にしている場合、SHOW SCHEMA文を使用すると、現在のカタログのすべてのスキーマが表示されます。データベースを表示するには、SHOW DATABASE文またはSHOW ALIAS文を使用します。

マルチスキーマを有効にしていない場合にSHOW SCHEMA文を使用すると、エラー・メッセージが表示されます。

### F.1.1.3 DROP SCHEMAの非互換

マルチスキーマ属性を持つデータベースにアタッチし、マルチスキーマ・ネーミングを有効にしている場合、DROP SCHEMA文を使用すると、指定したスキーマがそのデータベースから削除されます。

マルチスキーマを有効にしていない場合にDROP SCHEMA文を使用すると、エラー・メッセージが表示されます。

DROP SCHEMA FILENAME文を使用すると、V4.0以前のバージョンの場合と同様に文が解釈されます。つまり、指定したファイル名のデータベースが削除され、廃止予定の機能を示すエラー・メッセージが表示されます。

## F.1.2 DROP TABLEに対する現在のデフォルト制限

V4.1以上では、DROP TABLE文のデフォルトの動作は、以前のバージョンのようなカスケード削除ではなく、制限付き削除です。この動作では、表のみが削除されます。指定した表を他の項目（ビュー、制約、索引またはトリガー）が参照している場合、次の例に示すように、削除は失敗します。

    SQL> DROP TABLE DEGREES;
    %RDB-E-NO_META_UPDATE, metadata update failed
    -RDMS-F-TRGEXI, relation DEGREES is referenced in trigger
    COLLEGE_CODE_CASCADE_UPDATE
    -RDMS-F-RELNOTDEL, relation DEGREES has not been deleted

SQL DROP TABLE文にCASCADEキーワードを指定すると、その表またはビューを参照するすべての項目が削除され、次に、表自体が削除されます。次の例では、カスケード削除を示しています。

    SQL> DROP TABLE JOB_HISTORY CASCADE;
    View CURRENT_INFO is also being dropped.
    View CURRENT_JOB is also being dropped.
    Constraint JOB_HISTORY_FOREIGN1 is also being dropped.
    Constraint JOB_HISTORY_FOREIGN2 is also being dropped.
    Constraint JOB_HISTORY_FOREIGN3 is also being dropped.
    Index JH_EMPLOYEE_ID is also being dropped.
    Index JOB_HISTORY_HASH is also being dropped.
    VIA clause on storage map JOB_HISTORY_MAP is also being dropped.
    Trigger EMPLOYEE_ID_CASCADE_DELETE is also being dropped.

## F.1.3 データベース・ハンドル名の25文字以下への制限

データベース・ハンドル名は、SQLでは別名と呼ばれます。セッションがSQLプリコンパイラ・コマンドラインのOPTIONS=(CONNECT)修飾子またはモジュール言語コマンドラインのCONNECT修飾子によって有効になると、別名の長さは25文字以下に制限されます。データベース・ハンドルは、V4.1より前のバージョンのSQLでは認可識別子と呼ばれていました。

## F.1.4 ORDER BY句の廃止予定のデフォルト・セマンティクス

V4.1以前のバージョンでは、SQLには次のデフォルト・セマンティクスがありました。

- ANSI/ISO 1989規格では、異なるソート順が規定されています。将来のリリースでは、DESCで明示的に修飾されないかぎり、すべてのキーにASCのソート順が割り当てられます。

- DESC修飾子を継承するソート・キーがある場合、廃止予定の機能を示す警告が表示されます。

注意 2番目またはそれ以降のソート・キーにASCとDESCのどちらも指定しない場合、先行するソート・キーに指定した順序が使用されます。最初のソート・キーにソート順を指定しない場合、デフォルトでは昇順になります。

## F.1.5 EXTERNAL NAMES IS句に対する変更

マルチスキーマEXTERNAL NAME IS句は、ANSI/ISO SQL規格との混乱を回避するために、STORED NAME IS句に変更されました。

# F.2 廃止予定の構文

表F-1は、新しい構文に置き換えられたSQL文を示しています。これらの文は、SQLで引き続き使用できますが、廃止予定の機能を示すメッセージを使用してフラグが付けられる場合があります。

表F-1 SQLの廃止予定の構文
廃止予定の文 | 新しい構文 | 廃止予定の機能を示すメッセージの有無
--- | --- | ---
ALTER CACHE ... LARGE MEMORY IS ENABLED | ALTER CACHE ...SHARED MEMORY IS PROCESS RESIDENT |
ALTER CACHE ... SHARED MEMORY IS SYSTEM | ALTER CACHE ...SHARED MEMORY IS PROCESS RESIDENT |
ALTER CACHE ... WINDOW COUNT IS ... | なし |
ALTER SCHEMA | ALTER DATABASE | ○
CREATE CACHE ... LARGE MEMORY IS ENABLED | CREATE CACHE ...SHARED MEMORY IS PROCESS RESIDENT |
CREATE CACHE ... SHARED MEMORY IS SYSTEM | CREATE CACHE ...SHARED MEMORY IS PROCESS RESIDENT |
CREATE CACHE ... WINDOW COUNT IS ... | なし |
CREATE SCHEMA | CREATE DATABASE | ○1
DECLARE SCHEMA --- モジュール言語およびプリコンパイルされたSQL | DECLARE ALIAS | ○
DECLARE SCHEMA --- 動的SQLおよび対話型SQL | ATTACH | 対話型SQLでは○、動的SQLでは×
DECLARE and SET TRANSACTION --- CONSISTENCY LEVEL 2、3 | ISOLATION LEVEL READ COMMITTED ISOLATION LEVEL REPEATABLE READ ISOLATION LEVEL SERIALIZABLE | ○
DROP SCHEMA FILENAME | DROP DATABASE FILENAME | プリコンパイルされたSQLおよびSQLモジュール言語のメッセージのみ
DROP SCHEMA PATHNAME | DROP DATABASE PATHNAME | プリコンパイルされたSQLおよびSQLモジュール言語のメッセージのみ
DROP SCHEMA AUTHORIZATION | DROP DATABASE ALIAS | プリコンパイルされたSQLおよびSQLモジュール言語のメッセージのみ
EXPORT SCHEMA FILENAME | EXPORT DATABASE FILENAME | ×
EXPORT SCHEMA PATHNAME | EXPORT DATABASE PATHNAME | ×
EXPORT SCHEMA AUTHORIZATION | EXPORT DATABASE ALIAS | ×
FINISH | DISCONNECT DEFAULT | データベースがDECLARE SCHEMAで宣言されている場合は○、それ以外の場合は準拠しない使用方法を示すエラー・メッセージ
SCHEMA AUTHORIZATIONに対するGRANT | GRANT ON DATABASE ALIAS | ○
IMPORT SCHEMA AUTHORIZATION | IMPORT DATABASE FROM filespec WITH ALIAS | ○
INTEGRATE | INTEGRATE DATABASE | ○
PREPARE...SELECT LIST | DESCRIBE...SELECT LIST | ○
REVOKE | REVOKE ON DATABASE ALIAS | ○
SET ANSI | SET DEFAULT DATE FORMAT SET KEYWORD RULES SET QUOTING RULES SET VIEW UPDATE RULES | ×
ALTER DATABASE... JOURNAL IS... [NO]CACHE FILENAME... | なし | ○（この機能は新しいハードウェアでは無効になった。）
ALTER DATABASE... JOURNAL IS ... NOTIFY | CREATEまたはALTER DATABASE NOTIFY | ○（この機能は変更イメージ・ジャーナル機能から除外された。）
WRITE ONCE storage area attribute | なし | ○（この機能はハードウェアでの使用は不可能になった。）
VARIANT | NOT DETERMINISTIC | ×（新しい構文はSQL:1999言語規格に準拠）
NOT VARIANT | DETERMINISTIC | ×（新しい構文はSQL:1999言語規格に準拠）
GENERAL PARAMETER STYLE | PARAMETER STYLE GENERAL | ×（新しい構文はSQL:1999言語規格に準拠）
WHILE...LOOP...END LOOP | WHILE...DO...END WHILE | ×（新しい構文はSQL:1999言語規格に準拠）

1詳細は、付録F.1節を参照してください。

## F.2.1 コマンドライン修飾子

SQLモジュール言語およびプリコンパイラ・コマンドラインの一部の修飾子は置き換えられました。具体的な内容は、次のとおりです。

- ANSI_AUTHORIZATION修飾子はRIGHTS句に置き換えられています。

- ANSI_DATE修飾子はDEFAULT DATE FORMAT句に置き換えられています。

- ANSI_IDENTIFIERS修飾子はKEYWORD RULES句に置き換えられています。

- ANSI_PARAMETERS修飾子はPARAMETER COLONS句に置き換えられています。

- ANSI_QUOTING修飾子はQUOTING RULES句に置き換えられています。

## F.2.2 廃止予定の対話型SQL文

SET ANSI文を使用すると、廃止予定の機能を示すメッセージが返されます。この文は次のとおり置き換えられました。

- SET ANSI DATE文はSET DEFAULT DATE FORMAT文に置き換えられています。詳細は、「SET DEFAULT DATE FORMAT文」を参照してください。

- SET ANSI IDENTIFIERS文はSET KEYWORD RULES文に置き換えられています。詳細は、「SET KEYWORD RULES文」を参照してください。

- SET ANSI QUOTING文はSET QUOTING RULES文に置き換えられています。詳細は、「SET QUOTING RULES文」を参照してください。

## F.2.3 ANSI/ISO SQL規格への制約の準拠

CREATE TABLE文内の制約名の位置が、ANSI/ISO SQLに準拠するよう変更されました。制約名は、制約の後ではなく、前にあると想定されます。制約名を制約の後に配置すると、廃止予定の機能を示す次のメッセージが表示されます。

    SQL> CREATE TABLE TEMP2
    cont> (COL1 REAL NOT NULL CONSTRAINT C7);
    %SQL-I-DEPR_FEATURE, Deprecated Feature: Constraint name clause following
    constraint definition
    %SQL-I-DEPR_FEATURE, Deprecated Feature: Default evaluation for constraints:
    DEFERRABLE

制約に対するデフォルトの評価時間であるDEFERRABLEは、廃止予定になりました。言語がSQLV40の場合、制約はデフォルトでは引き続きDEFERRABLEになります。ただし、評価時間を指定しない場合、廃止予定の機能を示す次のメッセージが表示されます。

    SQL> CREATE TABLE TEMP3
    cont> (COL1 REAL CONSTRAINT C6 NOT NULL);
    %SQL-I-DEPR_FEATURE, Deprecated Feature: Default evaluation for constraints:
    DEFERRABLE

言語がSQL92またはSQL99の場合、制約はデフォルトでNOT DEFERRABLEになり、廃止予定の機能を示すメッセージは表示されません。

## F.2.4 廃止されたキーワード

表F-2は、廃止されたキーワードと、SQL文で推奨される代替キーワードを示しています。

表F-2 廃止されたSQLキーワード
廃止キーワード | 推奨キーワード
--- | ---
COMMIT_TIME | COMMIT TIME
CREATETAB | CREATE
DIAGNOSTIC | CONSTRAINT
QUADWORD | BIGINT
READ_ONLY | READ ONLY
READ_WRITE | READ WRITE
VERB_TIME | VERB TIME

廃止されたキーワードを使用すると、次の診断メッセージが表示されます。

     SET TRANSACTION READ_ONLY;
                     1
    %SQL-I-DEPR_FEATURE, (1) Deprecated Feature: READ_ONLY

## F.2.5 廃止された組込みファンクション

SYS$LIBRARY:SQL_FUNCTIONSライブラリでSQLルーチンまたは外部ルーチンとして提供されていたファンクションのうち、一部のファンクションが廃止され、ネイティブSQL組込みファンクションに置き換えられました。

- ファンクションABSは、DOUBLE PRECISION引数を受け入れてDOUBLE PRECISIONの結果を返すSQLファンクションとして提供されていました。
  これに対応するネイティブSQLファンクションは、より幅広いデータ型（数値およびINTERVAL型）をサポートし、一般的により便利になっています。

- ファンクションLEASTおよびGREATESTは、2つの整数の引数のみを受け入れるSQLファンクションとして提供されていました。
  これに対応するネイティブSQLファンクションでは、より幅広いデータ型に対応し、任意の長さのパラメータ・リストをサポートします。

- ファンクションLENGTHおよびLENGTHBは、VARCHAR(2000)パラメータを受け入れて引数に適切なCHARACTER_LENGTH操作またはOCTET_LENGTH操作を実行するSQLストアド・プロシージャとして提供されていました。
  ネイティブSQLファンクションでは、より幅広いキャラクタ・セット値と文字データ型に対応しています。

SQLではこれらのファンクションを直接実装するため、SYS$LIBRARY:SQL_FUNCTIONS内のこれらの定義は不要になりました。これらのファンクションは既存のアプリケーション用にデータベースで保持されますが、新しいアプリケーションでは現在Oracle Rdb内の新しいネイティブ・ファンクションを自動的に使用します。

# F.3 廃止予定の論理名

次の項では、廃止予定の論理名と、新しい論理名（ある場合）について説明します。

新しい論理名の詳細は、付録Eを参照してください。

## F.3.1 RDB$CHARACTER_SET論理名

論理名RDB$CHARACTER_SETは廃止予定になりました。この名前は、V4.1とV4.0のデータベースおよびアプリケーションの互換性を保つためにSQLで使用されます。

V4.1およびV4.0よりも高いバージョンを使用している場合、Oracle Rdbではこの論理名のかわりに次の句および文を使用することをお薦めします。

- DECLARE ALIAS文のDEFAULT CHARACTER SET句およびNATIONAL CHARACTER SET句。

- SQLモジュール・ヘッダー（第3.2節）またはDECLARE MODULE文のIDENTIFIER CHARACTER SET句、DEFAULT CHARACTER SET句およびNATIONAL CHARACTER SET句。

- 動的SQLのSET IDENTIFIER CHARACTER SET文、SET DEFAULT CHARACTER SET文およびSET NATIONAL CHARACTER SET文。

- CREATE DATABASE文またはALTER DATABASE文のIDENTIFIER CHARACTER SET句、DEFAULT CHARACTER SET句およびNATIONAL CHARACTER SET句。

# F.4 識別子として廃止予定の予約語

後述のリストには、次の規格の予約語が含まれています。

- ANSI/ISO 1989 SQL規格

- ANSI/ISO 1992 SQL規格

- ANSI/ISO 1999 SQL規格

これらの予約語が二重引用符（"）なしに識別子として使用されると、ANSI/ISO 1989規格に準拠しない使用方法としてフラグが付けられ、廃止予定の機能を示すメッセージが表示されます。

Oracle Rdbでは、予約語は識別子として使用しないことをお薦めします。この機能は廃止予定であり、将来のバージョンのSQLではサポートされない可能性があるためです。ただし、予約語を識別子として使用する必要がある場合は、ANSI/ISO 1989規格に準拠するように、二重引用符で囲んでください。SQLでは、小文字、スペースまたはタブ・ストップを二重引用符で囲むことはできません。

たとえば、ANSI/ISO 1989の予約語であるSELECTを表の識別子として使用する場合、文を次のように記述します。

    SELECT * FROM "SELECT";

## F.4.1 ANSI/ISO 1989 SQL規格の予約語

ALL | AND | ANY
AS | ASC | AUTHORIZATION
AVG | BEGIN | BETWEEN
BY | CHAR | CHARACTER
CHECK | CLOSE | COBOL
COMMIT | CONTINUE | COUNT
CREATE | CURRENT | CURSOR
DEC | DECIMAL | DECLARE
DEFAULT | DELETE | DESC
DISTINCT | DOUBLE | END
ESCAPE | EXEC | EXISTS
FETCH | FLOAT | FOR
FOREIGN | FORTRAN | FOUND
FROM | GO | GOTO
GRANT | GROUP | HAVING
IN | INDICATOR | INSERT
INT | INTEGER | INTO
IS | KEY | LANGUAGE
LIKE | MAX | MIN
MODULE | NOT | NULL
NUMERIC | OF | ON
OPEN | OPTION | OR
ORDER | PASCAL | PLI
PRECISION | PRIMARY | PRIVILEGES
PROCEDURE | PUBLIC | REAL
REFERENCES | ROLLBACK | SCHEMA
SECTION | SELECT | SET
SMALLINT | SOME | SQL
SQLCODE | SQLERROR | SUM
TABLE | TO | UNION
UNIQUE | UPDATE | USER
VALUES | VIEW | WHENEVER
WHERE | WITH | WORK