この付録の内容は、次のとおりです。
次の項では、非互換構文について説明します。
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 |
マルチスキーマ属性を持つデータベースにアタッチし、マルチスキーマ・ネーミングを有効にしている場合、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. |
データベース・ハンドル名は、SQLでは別名と呼ばれます。セッションがSQLプリコンパイラ・コマンドラインのOPTIONS=(CONNECT)修飾子またはモジュール言語コマンドラインのCONNECT修飾子によって有効になると、別名の長さは25文字以下に制限されます。データベース・ハンドルは、V4.1より前のバージョンのSQLでは認可識別子と呼ばれていました。
F.1.4 ORDER BY句の廃止予定のデフォルト・セマンティクス
V4.1以前のバージョンでは、SQLには次のデフォルト・セマンティクスがありました。
2番目またはそれ以降のソート・キーにASCとDESCのどちらも指定しない場合、先行するソート・キーに指定した順序が使用されます。最初のソート・キーにソート順を指定しない場合、デフォルトでは昇順になります。 |
マルチスキーマEXTERNAL NAME IS句は、ANSI/ISO SQL規格との混乱を回避するために、STORED NAME IS句に変更されました。
F.2 廃止予定の構文
表F-1は、新しい構文に置き換えられたSQL文を示しています。これらの文は、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言語規格に準拠) |
SQLモジュール言語およびプリコンパイラ・コマンドラインの一部の修飾子は置き換えられました。具体的な内容は、次のとおりです。
SET ANSI文を使用すると、廃止予定の機能を示すメッセージが返されます。この文は次のとおり置き換えられました。
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文で推奨される代替キーワードを示しています。
廃止キーワード | 推奨キーワード |
---|---|
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 |
SYS$LIBRARY:SQL_FUNCTIONSライブラリで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ではこの論理名のかわりに次の句および文を使用することをお薦めします。
後述のリストには、次の規格の予約語が含まれています。
これらの予約語が二重引用符(")なしに識別子として使用されると、ANSI/ISO 1989規格に準拠しない使用方法としてフラグが付けられ、廃止予定の機能を示すメッセージが表示されます。
Oracle Rdbでは、予約語は識別子として使用しないことをお薦めします。この機能は廃止予定であり、将来のバージョンのSQLではサポートされない可能性があるためです。ただし、予約語を識別子として使用する必要がある場合は、ANSI/ISO 1989規格に準拠するように、二重引用符で囲んでください。SQLでは、小文字、スペースまたはタブ・ストップを二重引用符で囲むことはできません。
たとえば、ANSI/ISO 1989の予約語であるSELECTを表の識別子として使用する場合、文を次のように記述します。
SELECT * FROM "SELECT"; |
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 |