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

戻る
戻る
 
次へ
次へ
 


SET CHARACTER LENGTH文

文字列パラメータ、列、ドメインおよびオフセットの長さを文字またはオクテットのどちらで解釈するかを指定します。(オクテットとは、8ビットの集まりです。)

環境

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


形式




引数

'string-literal'
parameter parameter-marker

次のいずれかにする必要があるruntime-optionsの値を指定します。

CHARACTERSは、文字列パラメータ、列、ドメインおよびオフセットの長さを文字として解釈するように指定します。

OCTETSは、文字列パラメータ、列、ドメインおよびオフセットの長さをオクテットとして解釈するように指定します。

デフォルトはオクテットです。


使用方法


例1: 文字長のオクテットへの設定


SQL> set character length 'octets';
SQL> show connection current;
Connection: RDB$DEFAULT_CONNECTION
Default alias is RDB$DBHANDLE
Default catalog name is RDB$CATALOG
Default schema name is SMITH
Dialect: SQLV40
Default character unit: OCTETS
Keyword Rules: SQLV40
View Rules: SQLV40
Default DATE type: DATE VMS
Quoting Rules: SQLV40
Optimization Level: DEFAULT
Hold Cursors default: WITH HOLD PRESERVE NONE
Quiet commit mode: OFF
Compound transactions mode: EXTERNAL
Default character set is DEC_MCS
National character set is DEC_MCS
Identifier character set is DEC_MCS
Literal character set is DEC_MCS
Display character set is UNSPECIFIED

Alias RDB$DBHANDLE:
        Identifier character set is DEC_MCS
        Default character set is DEC_MCS
        National character set is DEC_MCS
SQL> /*
***> Create two domains: one uses LATIN9, a single-octet character
***> set, and one uses KANJI a fixed multi-octet character set.
***> */
SQL> create domain LATIN9_DOM char(8) character set ISOLATIN9;
SQL> create domain KANJI_DOM char(5) character set KANJI;
%SQL-F-CHRUNIBAD, Number of octets is not an integral number of characters
SQL> /*
***> Because KANJI is a fixed multi-octet character set, using two
***> octets for each character, you must specify the size as a
***> multiple of two.
***> */
SQL> create domain KANJI_DOM char(8) character set KANJI;
SQL> show domains;
User domains in database with filename MIA_CHAR_SET
KANJI_DOM                       CHAR(8)
         KANJI 4 Characters,  8 Octets
LATIN9_DOM                      CHAR(8)
         ISOLATIN9 8 Characters,  8 Octets
SQL>

例2: 文字長の文字への設定


SQL> set character length 'characters';
SQL> show connection current;
Connection: RDB$DEFAULT_CONNECTION
Default alias is RDB$DBHANDLE
Default catalog name is RDB$CATALOG
Default schema name is SMITH
Dialect: SQLV40
Default character unit: CHARACTERS
Keyword Rules: SQLV40
View Rules: SQLV40
Default DATE type: DATE VMS
Quoting Rules: SQLV40
Optimization Level: DEFAULT
Hold Cursors default: WITH HOLD PRESERVE NONE
Quiet commit mode: OFF
Compound transactions mode: EXTERNAL
Default character set is DEC_MCS
National character set is DEC_MCS
Identifier character set is DEC_MCS
Literal character set is DEC_MCS
Display character set is UNSPECIFIED

Alias RDB$DBHANDLE:
        Identifier character set is DEC_MCS
        Default character set is DEC_MCS
        National character set is DEC_MCS
SQL> /*
***> Create two domains: one uses LATIN9, a single-octet character
***> set, and one uses KANJI a fixed multi-octet character set.
***> */
SQL> create domain LATIN9_DOM char(8) character set ISOLATIN9;
SQL> create domain KANJI_DOM char(5) character set KANJI;
SQL> show domains;
User domains in database with filename MIA_CHAR_SET
KANJI_DOM                       CHAR(5)
         KANJI 5 Characters,  10 Octets
LATIN9_DOM                      CHAR(8)
         ISOLATIN9 8 Characters,  8 Octets
SQL>


SET COMPOUND TRANSACTIONS文

複合文のデフォルトのトランザクション開始時におけるSQLの動作を制御できます。

デフォルトでは、現在のトランザクションが存在しない場合、複合文またはストアド・プロシージャを実行する前にトランザクションが開始されます。ただし、この場合はプロシージャ内のアクションと競合するおそれがあります。また、プロシージャの本体がデータベース・アクセスを実行しない場合は、トランザクションを理由もなく開始することになります。このデフォルト設定は、プロシージャのトランザクション開始を想定する必要のあるアプリケーションとの下位互換性のために保持されています。


環境

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


形式



引数

int-ext-value

キーワード'INTERNAL'または'EXTERNAL'を含む文字列リテラルまたはホスト変数です。これらのキーワードでは大/小文字が区別されません(大文字、小文字、または大/小文字の混在が可能)。値をEXTERNALに設定すると、プロシージャの実行前にトランザクションが開始されます。値をINTERNALに設定すると、プロシージャにより、プロシージャの実行に必要とされるトランザクションが必要に応じて開始されます。

使用方法


例1: トランザクション開始の有効化と無効化

対話型SQLまたは動的SQLでは、次のSETコマンドを使用して、SQLインタフェースによるトランザクションの開始を有効または無効にできます。SETコマンドのパラメータは、キーワード'INTERNAL'または'EXTERNAL'を含む文字列リテラルまたはホスト変数です。


SQL> SET COMPOUND TRANSACTIONS 'internal';
SQL> CALL START_TXN_AND_COMMIT ();
SQL> SET COMPOUND TRANSACTIONS 'external';
SQL> CALL UPDATE_EMPLOYEES (...);


SET CONNECT文

使用可能な接続の中から名前付きの接続を選択し、現在の接続を一時停止してそのコンテキストを保存します。さらに、その名前付きの接続をSET CONNECT文の実行後にアプリケーションの後続プロシージャで使用します。

接続の作成と名前付けの詳細は、「CONNECT文」を参照してください。


環境

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


形式



引数

connection-name

アタッチされるデータベースのグループ(環境)とそれらを参照するデータベースおよびリクエスト・ハンドル(接続)の間の関連に対する名前を指定します。

接続名は次のように指定できます。

DEFAULT

一単位としてアタッチする1つ以上のデータベースを指定します。

デフォルト接続を指定するにはDEFAULTキーワードを使用します。デフォルト接続とは、対話的にアタッチされたすべてのデータベース、またはDECLARE ALIAS文によってコンパイル時にモジュールで認識されるすべてのデータベースです。


使用方法

SQLに認識されない接続名を指定すると、エラー・メッセージが表示され、接続状態は変更されません。

例1: デフォルト接続および他の2つの接続の作成

対話型SQL接続の次のログ・ファイルは、personnel_northwest、personnel_northeastおよびpersonnel_southeastの3つのデータベース・アタッチを示しています。(personnel_northwestの別名を指定しないことにより、デフォルトの別名が割り当てられています。)EAST_COASTを含む、いくつかの接続が確立されます。EAST_COASTには、personnel_northeastとpersonnel_southeastの両方が含まれます。

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


SQL> --
SQL> -- Attach to the personnel_northwest and personnel_northeast databases.
SQL> -- personnel_northwest has the default alias, so personnel_northeast
SQL> -- requires an alias.
SQL> -- All the attached databases comprise the default connection.
SQL> --
SQL> ATTACH 'FILENAME personnel_northwest';
SQL> ATTACH 'ALIAS NORTHEAST FILENAME personnel_northeast';
SQL> --
SQL> -- Add the personnel_southeast database.
SQL> --
SQL> ATTACH 'ALIAS SOUTHEAST FILENAME personnel_southeast';
SQL> --
SQL> -- Connect to personnel_southeast.  CONNECT does an
SQL> -- implicit SET CONNECT to the newly created connection.
SQL> --
SQL> CONNECT TO 'ALIAS SOUTHEAST FILENAME personnel_southeast'
cont>     AS 'SOUTHEAST_CONNECTION';
SQL> --
SQL> -- Connect to both personnel_southeast and personnel_northeast as
SQL> -- EAST_COAST connection. SQL replaces the current connection to
SQL> -- the personnel_southeast database with the EAST_COAST connection
SQL> -- when you issue the CONNECT statement. You now have two different
SQL> -- connections that include personnel_southeast.
SQL> --
SQL> CONNECT TO 'ALIAS NORTHEAST FILENAME personnel_northeast,
cont>     ALIAS SOUTHEAST FILENAME personnel_southeast'
cont>     AS 'EAST_COAST';
SQL> --
SQL> -- The DEFAULT connection still includes all the attached databases.
SQL> --
SQL> SET CONNECT DEFAULT;
SQL> --
SQL> -- DISCONNECT releases the connection name EAST_COAST, but
SQL> -- does not detach from the EAST_COAST databases because
SQL> -- they are also part of the default connection.
SQL> --
SQL> DISCONNECT 'EAST_COAST';
SQL> --
SQL> SET CONNECT 'EAST_COAST';
%SQL-F-NOSUCHCON, There is not an active connection by that name
SQL> --
SQL> -- If you disconnect from the default connection, and have no other
SQL> -- current connections, you are no longer attached to any databases.
SQL> --
SQL> DISCONNECT DEFAULT;
SQL> SHOW DATABASES;
%SQL-F-ERRATTDEF, Could not use database file specified by SQL$DATABASE
-RDB-E-BAD_DB_FORMAT, SQL$DATABASE does not reference a database known to Rdb
-RMS-E-FNF, file not found

例2: 接続の切断および同じデータベースでの新規接続の開始

この例では、デフォルト接続と現在の接続CAの2つの接続があります。両方の接続でpersonnel_caデータベースが使用されます。SHOW DATABASE文を使用してデータベース設定を表示します。


SQL> --
SQL> -- Establish a default connection by attaching to the personnel_ca
SQL> -- database.
SQL> --
SQL> ATTACH 'FILENAME personnel_ca';
SQL> SHOW CONNECTIONS;
->      RDB$DEFAULT_CONNECTION
SQL> --
SQL> -- Start a new connection called CA.
SQL> --
SQL> CONNECT TO 'FILENAME personnel_ca'
cont>     AS 'CA';
SQL> SHOW CONNECTIONS;
        RDB$DEFAULT_CONNECTION
->      CA
SQL> --
SQL> -- The DISCONNECT CURRENT statement releases the connection name CA,
SQL> -- although the database personnel_ca still belongs to the default
SQL> -- connection.
SQL> --
SQL> DISCONNECT CURRENT;
SQL> SHOW CONNECTIONS;
->      RDB$DEFAULT_CONNECTION
SQL> --
SQL> -- Even though the database personnel_ca is still attached, CA
SQL> -- is no longer an active connection.
SQL> --
SQL> SET CONNECT 'CA';
%SQL-F-NOSUCHCON, There is not an active connection by that name
SQL> --
SQL> -- The original ATTACH statement comprises the default connection.
SQL> -- The DISCONNECT DEFAULT statement detaches the default connection.
SQL> --
SQL> DISCONNECT DEFAULT;
SQL> SHOW DATABASES;
%SQL-F-ERRATTDEF, Could not use database file specified by SQL$DATABASE
-RDB-E-BAD_DB_FORMAT, SQL$DATABASE does not reference a database known to Rdb
-RMS-E-FNF, file not found


SET DEFAULT CHARACTER SET文

SQLセッションのデフォルト・キャラクタ・セットを指定します。

環境

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


形式




引数

'string-literal'
parameter parameter-marker

セッションのデフォルト・キャラクタ・セットを指定します。runtime-optionsの値は有効なキャラクタ・セットである必要があります。使用可能なキャラクタ・セット名およびオプション値のリストは、第2.1節を参照してください。

使用方法

SQLモジュール言語およびプリコンパイルされたSQLにおけるモジュールのキャラクタ・セットの設定の詳細は、第3.2節および「DECLARE MODULE文」を参照してください。


例1: 対話型セッションのデフォルト・キャラクタ・セットの設定


SQL> show character sets;
Default character set is DEC_MCS
National character set is DEC_MCS
Identifier character set is SHIFT_JIS
Literal character set is SHIFT_JIS
Display character set is SHIFT_JIS
SQL> set default character set 'DEC_KANJI';
SQL> show character sets;
Default character set is DEC_KANJI
National character set is DEC_MCS
Identifier character set is SHIFT_JIS
Literal character set is SHIFT_JIS
Display character set is SHIFT_JIS


SET DEFAULT DATE FORMAT文

DATEデータ型またはCURRENT_TIMESTAMP組込みファンクションの列をVMS形式またはSQL99形式のどちらで解釈するかを指定します。

環境

SET DEFAULT DATE FORMAT文は次の環境で使用できます。


形式




引数

'string-literal'
parameter parameter-marker

次のいずれかにする必要があるruntime-optionsの値を指定します。

SQL99またはSQL92

DATEデータ型とCURRENT_TIMESTAMP組込みファンクションをSQL規格として解釈するように指定します。SQL規格のDATE形式にはYEAR TO DAYフィールドのみが含まれ、CURRENT_TIMESTAMPではTIMESTAMPデータ型が返されます。

VMS

DATEデータ型とCURRENT_TIMESTAMP組込みファンクションをVMS形式として解釈するように指定します。VMS形式のDATEおよびCURRENT_TIMESTAMPには、YEAR TO SECONDフィールドが含まれます。

使用方法


例1: DATE形式のSQL99への変更

デフォルトではDATEデータ型はOpenVMS DATE形式であるため、次の例ではSQLはエラーを発行します。つまり、DATEデータ型にはYEARからSECONDまでのフィールドが含まれます。SET DEFAULT DATE FORMAT文はCURRENT_DATEとDATEデータ型の互換性が保たれるよう、デフォルトをANSI/ISO形式に変更します。


SQL> set default date format 'VMS';
SQL> --
SQL> create domain LOGGING_DATE
cont>     DATE
cont>     default CURRENT_DATE;
%SQL-F-DEFVALINC, You specified a default value for LOGGING_DATE
which is inconsistent with its data type
SQL> --
SQL> set default date format 'SQL99';
SQL> --
SQL> create domain LOGGING_DATE
cont>     DATE
cont>     default CURRENT_DATE;
SQL> show domain LOGGING_DATE;
LOGGING_DATE                    DATE ANSI
 Oracle Rdb default: CURRENT_DATE


SET DIALECT文

次の特性について、現在の接続の設定を指定します。

SET DIALECT文によって、各設定を個別に指定するのではなく、1つのコマンドで複数の設定を指定できます。

表6-15は、各オプションの設定を示しています。

表6-15 言語設定
特性 SQL991 MIA SQLV40 ORACLE言語2
文字長 文字 文字 オクテット 文字
引用ルール デリミタ付き識別子 デリミタ付き識別子 リテラル デリミタ付き識別子
識別子としてキーワードを使用 × ×
ビュー更新規則 ANSI/ISO SQLの規則 ANSI/ISO SQLの規則 Oracle Rdbの規則 ANSI/ISO SQLの規則
デフォルトの日付書式 DATE ANSI DATE ANSI DATE VMS DATE VMS
パラメータ 必須 必須 使用不可 適用不可
デフォルト・キャラクタ・セット 変更なし KATAKANA 変更なし 変更なし
各国語キャラクタ・セット 変更なし KANJI 変更なし 変更なし
識別子キャラクタ・セット 変更なし DEC_KANJI 変更なし 変更なし
リテラル・キャラクタ・セット 変更なし KATAKANA 変更なし 変更なし


1SQL92およびSQL89にも該当します。
2ORACLE LEVEL1とORACLE LEVEL2の両方に該当します。

以前の言語との互換性維持を必要とする場合を除き、SQL99またはSQL92に言語を設定することをお薦めします。


環境

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

ただし、ORACLE言語は対話型SQLおよび動的SQLの環境でのみ使用できます。


形式




引数

ORACLE LEVEL1

次の動作を指定します。