ヘッダーをスキップ
Oracle Rdb SQLリファレンス・マニュアル
リリース7.2
E06178-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

例4: SET文を使用した、ANSI/ISO SQL規格またはMIA規格のへ拡張機能を含む構文に関するメッセージの表示

この例は、最初にSQL92_ENTRYに対して、次にMIAに対してフラグ設定をオンにしたときの出力を示しています。


SQL> -- Flagging is off by default. When you enter a statement that
SQL> -- uses the data type VARCHAR, SQL does not issue a message.
SQL> --
SQL> SHOW FLAGGER MODE;
The flagger mode is OFF
SQL> CREATE TABLE TEST1 (TEXT_COL VARCHAR (100));
SQL> --
SQL> -- When you set the flagger to SQL92_ENTRY, SQL generates an
SQL> -- error message because VARCHAR is an extension to the standard.
SQL> --
SQL> SET FLAGGER SQL92_ENTRY ON
SQL> CREATE TABLE TEST2 (TEXT_COL VARCHAR (100));
%SQL-I-NONSTADTP, Nonstandard data type
SQL> --
SQL> -- With the flagger set to SQL92_ENTRY, SQL does not generate an
SQL> -- error message for the data type CHAR because it is an ANSI/ISO
SQL> -- standard data type.
SQL> --
SQL> CREATE TABLE TEST3 (TEXT_COL CHAR);
SQL> --
SQL> -- However, when you set the flagger to MIA, SQL generates two
SQL> -- error messages because data definition is not part of the MIA
SQL> -- standard. The first error message is caused by the CREATE
SQL> -- keyword; the second is caused by trying to create a table.
SQL> --
SQL> -- (Note that the SET FLAGGER statement itself is nonstandard.)
SQL> --
SQL> SET FLAGGER MIA ON
%SQL-I-NONSTASYN, Nonstandard syntax
SQL> CREATE TABLE TEST3 (TEXT_COL CHAR);
%SQL-I-NONSTASYN, Nonstandard syntax
%SQL-I-NONSTASYN, Nonstandard syntax
SQL>

例5: SET文を使用した、廃止された構文のチェック

この例は、ユーザーがWARNING DEPRECATEを指定した場合とWARNING NODEPRECATEを指定した場合の廃止されたSQL文による出力を示しています。


SQL> --
SQL> -- By default, SQL sends warning messages when you use obsolete syntax.
SQL> --
SQL> DECLARE SCHEMA FILENAME personnel;
%SQL-I-DEPR_FEATURE, Deprecated Feature: SCHEMA (meaning ALIAS)
SQL> DISCONNECT ALL;
SQL> --
SQL> -- When you specify SET WARNING NODEPRECATE, SQL does not display warning
SQL> -- messages.
SQL> --
SQL> SET WARNING NODEPRECATE;
SQL> DECLARE SCHEMA FILENAME personnel;
SQL> DISCONNECT ALL;

例6: ページの長さの設定

次の例では、SET PAGE LENGTHコマンドを使用してHELPのページ区切りの長さを変更します。


SQL> set page length 40;
SQL> show display
Output of the query header is enabled
Output of the row counter is enabled
Output using edit strings is enabled
Page length is set to 40 lines
Line length is set to 80 bytes
Display NULL values using "NULL"


SET ALIAS文

動的に準備および実行されるSQLユーザー・セッションまたは対話型SQLのデフォルトの別名を指定します。この別名は、新たなSET ALIAS文を発行するまで使用されます。別名を指定しない場合、デフォルトはRDB$DBHANDLEです。


環境

SET ALIAS文は次の環境で使用できます。


形式



引数

alias-parameter

デフォルトの別名を指定する、プリコンパイルされたSQLのホスト言語変数またはSQLモジュール言語プロシージャの仮パラメータを指定します。

alias-parameter-marker

動的SQL文でパラメータ・マーカー(?)を指定します。別名のパラメータ・マーカーは、デフォルトの別名を指定するパラメータを参照します。

alias-string-literal

デフォルトの別名を指定する文字列リテラルを指定します。別名の文字列リテラルは、一重引用符で囲む必要があります。

使用方法


例1: オブジェクト名の修飾を回避するためのデフォルトの別名の設定


SQL> ATTACH 'ALIAS CORP FILENAME corporate_data';
SQL> SET CATALOG 'ADMINISTRATION';
SQL> SET SCHEMA 'PERSONNEL';
SQL> SELECT LAST_NAME FROM EMPLOYEES;
%SQL-F-NODEFDB, There is no default database
SQL> --
SQL> -- You must qualify the table name because you attached with an alias.
SQL> --
SQL> SELECT LAST_NAME FROM CORP.EMPLOYEES;
 LAST_NAME
 Ames
 Andriola
 Babbin
   .
   .
   .
100 rows selected
SQL> SET ALIAS 'CORP';
SQL> --
SQL> -- Now you do not need to qualify the table name EMPLOYEES.
SQL> --
SQL> SELECT LAST_NAME FROM EMPLOYEES;
 LAST_NAME
 Ames
 Andriola
 Babbin
   .
   .
   .
100 rows selected

例2: デフォルトの別名の変更

SHOW DATABASE文を使用してデータベース設定を表示します。


SQL> ATTACH 'FILENAME personnel';
SQL> ATTACH 'ALIAS corp FILENAME corporate_data';
SQL> --
SQL> -- The default alias, RDB$DBHANDLE, refers to PERSONNEL
SQL> -- to simplify references to CORPORATE_DATA make this
SQL> -- database the default alias
SQL> --
SQL> SET ALIAS 'CORP';
   .
   .
   .


SET ALL CONSTRAINTS文

コミット時に評価される制約のチェックを制御します。(この文は、動詞実行時の制約の評価には影響しません。動詞実行時の評価の詳細は、「SET TRANSACTION文」を参照してください。SET ALL CONSTRAINTS文は、トランザクションをコミットする前の遅延可能制約の定期的な評価に使用されます。

環境

SET ALL CONSTRAINTS文は次の環境で使用できます。


形式



引数

DEFAULT

次のいずれかを使用して指定した場合を除き、セッションのデフォルトの制約モードはDEFERREDに設定されます。

DEFERRED

OFF

このオプションを指定すると、制約の評価はトランザクション完了のコミット時まで遅延されます。OFFは、DEFERREDと同義です。

IMMEDIATE

ON

このオプションを指定すると、制約の評価は文の完了時にただちに実行されます。ONは、IMMEDIATEと同義です。

SET ALL CONSTRAINTS IMMEDIATE文を発行すると、SQLでは次のように処理されます。

トランザクションが完了すると、制約モードは後続文のためにデフォルトの制約モードに戻ります。


使用方法


例1: 対話型SQLでのSET ALL CONSTRAINTS文の使用


SQL> att 'file mf_personnel_sql';
SQL> set all constraints immediate;
SQL> show constraint;
    Statement constraint evaluation default is DEFERRED (off)
    Statement constraint evaluation is IMMEDIATE (on)
SQL> /*
***> Show the constraints
***> */
SQL> show tables (constraints) job_history;
Information for table JOB_HISTORY


Table constraints for JOB_HISTORY:
JOB_HISTORY_FOREIGN1
 Foreign Key constraint
 Column constraint for JOB_HISTORY.EMPLOYEE_ID
 Evaluated on COMMIT
 Source:
 JOB_HISTORY.EMPLOYEE_ID REFERENCES EMPLOYEES (EMPLOYEE_ID)

JOB_HISTORY_FOREIGN2
 Foreign Key constraint
 Column constraint for JOB_HISTORY.JOB_CODE
 Evaluated on COMMIT
 Source:
 JOB_HISTORY.JOB_CODE REFERENCES JOBS (JOB_CODE)

JOB_HISTORY_FOREIGN3
 Foreign Key constraint
 Column constraint for JOB_HISTORY.DEPARTMENT_CODE
 Evaluated on COMMIT
 Source:
 JOB_HISTORY.DEPARTMENT_CODE REFERENCES DEPARTMENTS (DEPARTMENT_CODE)

Constraints referencing table JOB_HISTORY:
No constraints found

SQL> set all constraints deferred;
SQL> show constraint;
Statement constraint evaluation default is DEFERRED (off)
Statement constraint evaluation is DEFERRED (off)
SQL>


SET ANSI文

特定のインスタンスのSQLの動作をANSI/ISO SQL規格に準拠させるかどうかを指定します。これらのインスタンスの現在のデフォルト動作は非準拠です。

注意

SQLでは、SET ANSI文の後継となる次の新しい文が提供されています。

さらに、SQLで提供されるSET DIALECT文を使用すると、これらのすべての文の設定を1つの文で指定できます。詳細は、「SET DIALECT文」を参照してください。

SET ANSI文を使用した場合、廃止予定の機能に関するメッセージは表示されません。


環境

SET ANSI文は、対話型SQLでのみ使用できます。

形式



引数

DATE ON

DATE OFF

DATEデータ型およびCURRENT_TIMESTAMPファンクションのデータ型の列に対するデフォルトの解釈を指定します。

DATEデータ型およびCURRENT_TIMESTAMPデータ型は、VMS ADTまたはANSIのどちらでもかまいません。デフォルトでは、どちらのデータ型もDATE VMSと解釈されます。VMS形式には、TIMESTAMPと同様にYEAR TO SECONDフィールドが含まれています。

SET DEFAULT DATE FORMAT文、プログラムに埋め込まれているDECLARE MODULE文のプリコンパイラDEFAULT DATE FORMAT句、またはモジュール・ファイルのモジュール言語DEFAULT DATE FORMAT句を使用すると、DATEおよびCURRENT_TIMESTAMPをANSI形式に変更できます。ANSI形式のDATEには、YEAR TO DAYフィールドのみが含まれます。

ドメインまたは表を作成する前に、SET DEFAULT DATE FORMAT文を使用する必要があります。列または表を作成した後は、この文はデータ型の変更に使用できません。

IDENTIFIERS ON

IDENTIFIERS OFF

予約語を識別子として使用する文をSQLでチェックするかどうかを指定します。SET ANSI IDENTIFIERS ONを指定すると、SQLではANSI/ISO規格に基づいて文の予約語をチェックします。予約語をSQL文の識別子として指定するには、これらを二重引用符で予約語を囲む必要があります。囲んでいない場合、予約語チェックを有効にすると、SQLでは該当する文の実行後に情報メッセージを発行します。廃止予定の識別子としての予約語のリストは、付録F.4節を参照してください。

SET ANSI IDENTIFIERS OFFを指定すると、識別子はチェックされません。デフォルトでは、SQLでは識別子をチェックしません。

QUOTING ON

QUOTING OFF

二重引用符を使用して、後続の文で別名とカタログ名のペアを区切ることができます。SQL構文のデフォルトでは、一重引用符のみを使用できます。ANSI/ISO SQL規格のネーミング規則に準拠するには、ANSI QUOTINGをオンにする必要があります。マルチスキーマ・データベースのネーミングを使用するには、ANSI QUOTINGをオンに設定してください。

例1: CURRENT_TIMESTAMPのANSI形式への設定

デフォルトではCURRENT_TIMESTAMPはADTデータ型であり、TIMESTAMPはANSIデータ型であるため、次の例ではSQLはエラー・メッセージを発行します。SET ANSI DATE ON文により、デフォルトのCURRENT_TIMESTAMPがANSI形式に変更されます。


SQL> begin
cont> declare :logging_date timestamp;
cont> set :logging_date = current_timestamp;
cont> trace :logging_date;
cont> end;
%SQL-F-UNSDATASS, Unsupported date/time assignment from <Source> to LOGGING_DATE
SQL> SET ANSI DATE ON;
SQL> begin
cont> declare :logging_date timestamp;
cont> set :logging_date = current_timestamp;
cont> trace :logging_date;
cont> end;

例2: SET ANSI IDENTIFIERS文を使用した予約語のチェック

この例は、ドメインを作成し、そのドメインのユーザー指定の名前としてANSI89の予約語CONTINUEを指定するSQL文の出力を示しています。SET ANSI IDENTIFIERS ON文では、この名前に大文字を使用し、二重引用符で名前を囲むよう求められます。


SQL> set ansi identifiers on;
SQL> create domain continue char(5);
%SQL-F-RES_WORD_AS_IDE, Keyword CONTINUE used as an identifier
SQL> create domain "CONTINUE" char(5);
SQL>


SET制御文

ターゲットのパラメータまたは変数名に値を代入します。

環境

SET代入制御文は、次の環境の複合文で使用できます。


形式



引数

parameter

variable-name

SQLが値式またはNULL値を格納するターゲットを指定します。

value-expr

NULL

値式の値またはNULL値をターゲットのパラメータまたは変数名に代入します。

使用方法


例1: ターゲット・パラメータへの値式の代入


BEGIN
SET :y = (SELECT COUNT (*) FROM employees);
END;

例2: ターゲット・パラメータへのNULLの値式の代入


BEGIN
SET :z = NULL;
END;


SET CATALOG文

動的に準備および実行されるSQLユーザー・セッション、または対話型SQLのデフォルトのカタログ名を指定します。このカタログ名は、新たなSET CATALOG文を発行するまで使用されます。

1つのマルチスキーマ・データベース内では、異なるカタログに存在する表を1つのSQL文で使用できますが、データベースが異なるカタログの表の場合は使用できません。マルチスキーマ・データベースでオブジェクトを指定する場合にカタログ名を省略すると、デフォルトのカタログ名が使用されます。


環境

SET CATALOG文は次の環境で使用できます。


形式





引数

catalog-expression

マルチスキーマ・データベースのデフォルトのカタログの名前を指定します。マルチスキーマ・データベースでオブジェクトを指定する場合にカタログ名を省略すると、デフォルトのカタログ名が使用されます。デフォルトのカタログ名を指定しない場合、デフォルトはRDB$CATALOGです。

カタログ名を別名で修飾する場合は、別名とカタログ名のペアに大文字を使用し、この名前のペアを二重引用符で囲む必要があります。

カタログの詳細は、第2.2.3項を参照してください。

catalog-parameter

デフォルトのカタログを指定する、プリコンパイルされたSQLのホスト言語変数またはSQLモジュール言語プロシージャの仮パラメータを指定します。カタログ・パラメータには、カタログ式が含まれている必要があります。

catalog-parameter-marker

動的SQL文でパラメータ・マーカー(?)を指定します。カタログのパラメータ・マーカーでは、デフォルトのカタログを指定するパラメータを参照します。カタログのパラメータ・マーカーには、カタログ式が含まれるパラメータを指定する必要があります。

catalog-string-literal

デフォルトのカタログを指定する文字列リテラルを指定します。カタログの文字列リテラルには、一重引用符で囲まれたカタログ式が含まれる必要があります。

使用方法


例1: デフォルト・データベースのスキーマとカタログのデフォルトの設定

この例では、ユーザーはマルチスキーマ・データベースcorporate_dataにアタッチし、SET SCHEMA文とSET CATALOG文を使用して、デフォルトをcorporate_dataデータベースのカタログADMINISTRATIONとスキーマACCOUNTINGに変更し、スキーマACCOUNTINGに表BUDGETを作成します。


SQL> ATTACH 'FILENAME corporate_data';
SQL> SHOW CATALOGS;
Catalogs in database with filename corporate_data
    ADMINISTRATION
    RDB$CATALOG
SQL>  SHOW SCHEMAS;
Schemas in database with filename corporate_data
    ADMINISTRATION.ACCOUNTING
    ADMINISTRATION.PERSONNEL
    ADMINISTRATION.RECRUITING
    RDB$SCHEMA
SQL> SET CATALOG 'ADMINISTRATION';
SQL> SET SCHEMA 'ACCOUNTING';
SQL> CREATE TABLE BUDGET (COL1 REAL);
SQL> SHOW TABLES;
     BUDGET
     DAILY_HOURS
     DEPARTMENTS
     .
     .
     .
SQL> --
SQL> -- To see the qualified table names, set default
SQL> -- to another schema and catalog.
SQL> --
SQL> SET CATALOG 'RDB$CATALOG';
SQL> SET SCHEMA 'RDB$SCHEMA';
SQL> SHOW TABLES
User tables in database with filename corporate_data
     ADMINISTRATION.ACCOUNTING.BUDGET
     ADMINISTRATION.ACCOUNTING.DAILY_HOURS
     ADMINISTRATION.ACCOUNTING.DEPARTMENTS
     .
     .
     .

例2: 別名を使用したデータベースのデフォルト・カタログの設定

この例では、ユーザーは、別名CORPを使用してマルチスキーマ・データベースcorporate_dataにアタッチします。デフォルトのカタログを設定すると、スキーマのみで表名を修飾できるため表名を短縮できます。


SQL> ATTACH 'ALIAS CORP FILENAME corporate_data';
SQL> CREATE TABLE ACCOUNTING.PROJECT_7 (STATUS REAL);
%SQL-F-DBHANDUNK, ACCOUNTING is not the alias of a known database
SQL> --
SQL> -- You cannot qualify the table name without the alias,
SQL> -- so SQL assumes ACCOUNTING is the alias, not the schema.
SQL> -- Unless you want to qualify the table name with
SQL> -- both alias and catalog names, you must set the
SQL> -- default catalog to ADMINISTRATION, which
SQL> -- contains ACCOUNTING. You must enable ANSI/ISO quoting to do this.
SQL> --
SQL> SET QUOTING RULES 'SQL92';
SQL> SET CATALOG '"CORP.ADMINISTRATION"';
SQL> CREATE TABLE ACCOUNTING.PROJECT_7 (STATUS REAL);
SQL> SHOW TABLES;
User tables in database with filename corporate_data
     ACCOUNTING.BUDGET
   .
   .
   .
     ACCOUNTING.PROJECT_7
     ACCOUNTING.WORK_STATUS
   .
   .
   .