$ SQL SQL> ATTACH 'FILENAME MF_PERSONNEL'; SQL> -- SQL> DECLARE :ERROR INTEGER; SQL> -- SQL> SELECT EMPLOYEE_ID,SOUNDEX_NAME FROM EMPLOYEES cont> LIMIT TO 3 ROWS; EMPLOYEE_ID SOUNDEX_NAME 00165 NULL 00190 NULL 00187 NULL 3 rows selected SQL> COMMIT; SQL> -- SQL> BEGIN cont> SET :ERROR = CLEAR_SOUNDEX (); cont> END; SQL> PRINT :ERROR; ERROR 0 SQL> -- SQL> SELECT EMPLOYEE_ID,SOUNDEX_NAME FROM EMPLOYEES cont> LIMIT TO 3 ROWS; EMPLOYEE_ID SOUNDEX_NAME 00165 00190 00187 3 rows selected SQL> COMMIT; SQL> -- SQL> SET TRANSACTION READ ONLY; SQl> BEGIN cont> SET :ERROR = 0; cont> CALL ADD_SOUNDEX_NAME (:ERROR); cont> END; *** ADD_SOUNDEX_NOTIFY activate *** *** ADD_SOUNDEX_NOTIFY start tran *** SQL> PRINT :ERROR; ERROR 0 SQL> COMMIT; *** ADD_SOUNDEX_NOTIFY commit tran *** *** ADD_SOUNDEX_NOTIFY deactivate *** SQL> -- SQL> SELECT EMPLOYEE_ID,SOUNDEX_NAME FROM EMPLOYEES cont> LIMIT TO 3 ROWS; EMPLOYEE_ID SOUNDEX_NAME 00165 S501 00190 O101 00187 L890 3 rows selected SQL> COMMIT; SQL> -- SQL> BEGIN cont> SET :ERROR = CLEAR_SOUNDEX (); cont> END; SQL> PRINT :ERROR; ERROR 0 SQL> -- SQL> SET TRANSACTION READ ONLY; SQL> BEGIN cont> SET :ERROR = 0; cont> CALL ADD_SOUNDEX_NAME (:ERROR); cont> END; *** ADD_SOUNDEX_NOTIFY activate *** *** ADD_SOUNDEX_NOTIFY start tran *** SQL> PRINT :ERROR; ERROR 0 SQL> ROLLBACK; *** ADD_SOUNDEX_NOTIFY rollback tran *** *** ADD_SOUNDEX_NOTIFY deactivate *** SQL> -- SQL> SELECT EMPLOYEE_ID,SOUNDEX_NAME FROM EMPLOYEES cont> LIMIT TO 3 ROWS; EMPLOYEE_ID SOUNDEX_NAME 00165 00190 00187 3 rows selected SQL> COMMIT; |
マルチスキーマ・データベースの現在のデフォルト・カタログに新規スキーマを作成します。
注意
データベースを作成する際のCREATE SCHEMA文の使用は廃止予定の機能です。ルート・ファイル・パラメータなど、データベースの物理属性を指定すると、情報メッセージ付きで、SQLによりデータベースが作成されます。
SQL> CREATE SCHEMA FILENAME TEST SNAPSHOT IS DISABLED; %SQL-I-DEPR_FEATURE, Deprecated Feature: SCHEMA (meaning DATABASE)
物理属性を指定しない場合は、マルチスキーマ・ネーミングを有効にする必要があることを示すエラー・メッセージが表示されます。
SQL> CREATE SCHEMA PARTS %SQL-F-SCHCATMULTI, Schemas and catalogs may only be referenced with multischema enabled
スキーマとは、データベース内の定義グループです。CREATE SCHEMA文を使用すると、単一SQL文で新規スキーマに対してすべてのデータ定義と権限定義を指定できます。スキーマには後で定義を追加することもできます。
スキーマ定義の他にも、データベースにはデータベース・システム・ファイルとユーザー・データも含まれます。データベース・ルート・ファイルまたは記憶域パラメータなど、物理データベース特性を指定する必要がある場合は、CREATE DATABASE文を使用します。詳細は、「CREATE DATABASE文」を参照してください。
CREATE SCHEMA文には、任意の数のオプションのスキーマ要素を指定できます。スキーマ要素は(CREATE STORAGE AREA、CREATE DOMAIN ... FROM path-nameおよびCREATE TABLE ... FROM path-nameを除く)CREATE文のいずれか、またはGRANT文です。
このような文には文の終了記号が必要ですが、CREATE SCHEMA文またはCREATE DATABASE文の一部の場合は不要です。CREATE SCHEMA文の中でこれらの文を使用する場合は、最後のスキーマ要素にのみ文の終了記号を使用します。最初の文の終了記号はCREATE SCHEMA文を終了させます。その後、CREATE文またはGRANT文はCREATE SCHEMA文の有効範囲外になります。
CREATE SCHEMA文は次の環境で使用できます。
- 対話型SQL内
- プリコンパイル対象のホスト言語プログラムに埋め込まれる場合
- SQLモジュールのプロシージャの一部として
- 動的SQLで動的に実行される文として
AUTHORIZATION auth-id
スキーマ名を指定しない場合、認可識別子によってデフォルト・スキーマが指定されます。ANSI/ISO 1989規格に準拠する場合は、スキーマ名なしでAUTHORIZATION句を指定します。現在のANSI/ISO SQL規格に準拠する場合は、AUTHORIZATION句とスキーマ名を指定します。
create-collating-sequence-statement
詳細は、「CREATE COLLATING SEQUENCE文」を参照してください。CREATE SCHEMA文に埋め込まれたCREATE DOMAIN文の照合順番を指定する場合は、最初に同じCREATE SCHEMA文の中でCREATE COLLATING SEQUENCE文を指定する必要があります。
create-domain-statement
詳細は、「CREATE DOMAIN文」を参照してください。CREATE SCHEMA文にCREATE DOMAIN文を埋め込む場合は、FROM path-name句は使用できません。ただし、CREATE SCHEMA文の後には別のCREATE DOMAIN文を発行できます。CREATE SCHEMA文では、ドメインを直接記述することもできます。
埋込みCREATE DOMAIN文の照合順番を指定する場合は、最初に同じCREATE SCHEMA文の中でCREATE COLLATING SEQUENCE文を指定する必要があります。
create-function-statement
詳細は、「CREATE ROUTINE文」を参照してください。create-index-statement
詳細は、「CREATE INDEX文」を参照してください。create-module-statement
詳細は、「CREATE MODULE文」を参照してください。create-procedure-statement
詳細は、「CREATE ROUTINE文」を参照してください。create-sequence-statement
詳細は、「CREATE SEQUENCE文」を参照してください。create-storage-map-statement
詳細は、「CREATE STORAGE MAP文」を参照してください。create-table-statement
詳細は、「CREATE TABLE文」を参照してください。CREATE SCHEMA文にCREATE TABLE文を埋め込む場合は、FROM path-name句は使用できません。ただし、CREATE SCHEMA文の後には別のCREATE TABLE文を発行できます。CREATE SCHEMA文では、表を直接記述することもできます。
CREATE SCHEMA文の中のCREATE TABLE文は、作成前のドメインを示すこともできます。ただし、同一のCREATE SCHEMA文にドメインに対するCREATE DOMAIN文が存在する必要があります。
create-trigger-statement
詳細は、「CREATE TRIGGER文」を参照してください。create-view-statement
詳細は、「CREATE VIEW文」を参照してください。grant-statement
詳細は、「GRANT文」を参照してください。schema-element
一部のCREATE文またはGRANT文です。使用可能なCREATE文の完全なリストについては、この項の構文図を参照してください。schema-name
CREATE SCHEMA文で作成したスキーマの名前を指定します。スキーマ名は、カタログ名全体、または別名で修飾されたカタログ名で修飾できます。別名とカタログ名の両方を二重引用符で囲み、ピリオドで区切る必要があります。別名とカタログ名のペアを指定する前に、SET QUOTING RULES文を発行する必要がありますが、これを発行しないと、SQLから二重引用符の使用に関するエラー・メッセージが表示されます。
別名とカタログ名を使用したスキーマ名の修飾の詳細は、第2.2.15項を参照してください。
- CREATE SCHEMA文がCREATE DATABASE文の中の従属句の場合は、別名とカタログ名は、最後に作成したスキーマの別名とカタログ名と同一のものか、デフォルトの別名とカタログ名にする必要があります。
例1: マルチスキーマ・データベース内でのスキーマの作成次の対話型文では、カタログ内のスキーマを含むデータベースを作成します。CREATE SCHEMA文を単体で発行するか、またはCREATE DATABASE文の一部として発行します。
SQL> SET DIALECT 'SQL99'; SQL> CREATE DATABASE ALIAS PERS_ALIAS FILENAME personnel MULTISCHEMA IS ON; SQL> CREATE CATALOG "PERS_ALIAS.ADMIN"; SQL> CREATE SCHEMA "PERS_ALIAS.ADMIN".PAYROLL; SQL> SHOW SCHEMAS; Schemas in database PERS_ALIAS "PERS_ALIAS.ADMIN".PAYROLL "PERS_ALIAS.RDB$CATALOG".RDB$SCHEMA