SET OPTION
Synopsis
SET OPTION option_keyword = value
概要
SET OPTION 文では、コンパイル・モード、SQL 構成設定、および日付、時刻、数値規則を管理するロケール設定などの、実行オプションを設定します。SET OPTION 文ごとに、キーワード・オプションを 1 つのみ設定できます。
SET OPTION は、Dynamic SQL または Embedded SQL で使用できます。SET OPTION は SQL シェルからは発行できません。
他の SET OPTION 引数 (ここには記載されていません) は、Caché で SQL 互換性に対し解析されますが、実行はしません。
SET OPTION では、準備および実行が即座に行われ、通常一度しか実行されないため、ODBC、JDBC、またはダイナミック SQL で SET OPTION 用のクエリ・キャッシュは作成されません。
Caché でサポートされているオプションは以下のとおりです。
COMPILEMODE
COMPILEMODE オプションを使用して、現在のネームスペースのコンパイル・モードを、DEFERRED、IMMEDIATE、INSTALL、または NOCHECK に設定します。既定値は IMMEDIATE です。DEFERRED から IMMEDIATE コンパイル・モードへ変更すると、Deferred Compile Queue のいずれのクラスもすぐにコンパイルされるようになります。すべてのクラスのコンパイルが成功すると、Caché は SQLCODE を 0 に設定します。エラーがある場合は -400 に設定します。クラス・コンパイルのエラーは ^mtemp2 ("Deferred Compile Mode","Error") に記録されています。SQLCODE が -400 に設定された場合は、このグローバル構造を表示して、エラーの詳細メッセージを調べます。INSTALL コンパイル・モードは DEFERRED コンパイル・モードと似ていますが、テーブルにデータがない DDL インストールにのみ使用してください。
NOCHECK コンパイル・モードは IMMEDIATE と似ていますが、コンパイル時には以下の制約のチェックをスキップします: テーブルが削除される場合、Caché は削除するテーブルを参照する別のテーブルにある外部キー制約をチェックしません。外部キー制約が追加される場合、Caché は既存のデータをチェックしてその外部キーの有効性を保証するということはしません。NOT NULL 制約が追加される場合、Caché は既存のデータに NULL データがあるかチェックしたり、フィールドの既定値を割り当てたりすることはしません。UNIQUE または主キー制約が削除される場合、Caché はそのテーブルまたは別のテーブルの外部キーが、削除されるキーを参照しているかどうかはチェックしません。
LOCK_TIMEOUT
LOCK_TIMEOUT 数値オプションにより、現在のプロセスの既定のロック・タイムアウトを設定できます。LOCK_TIMEOUT value は、SQL の実行中にロックを確立しようとする操作を待機する秒数です。ロックの競合が発生すると現在のプロセスでは LOCK、INSERT、UPDATE、DELETE、または SELECT の各操作に対してレコード、テーブル、または他のエンティティを直ちにロックできない場合に、このロックに対するタイムアウトを使用します。Caché SQL はタイムアウトになるまでロックを確立しようとしますが、タイムアウトになると SQLCODE -110 または -114 エラーを生成します。
使用できる値は正の整数と 0 です。タイムアウトの設定はプロセスごとに行います。現在のプロセスのロック・タイムアウト設定を確認するには、GetProcessLockTimeout()Opens in a new tab メソッドを使用します。
現在のプロセスに対してロック・タイムアウトを設定していない場合、これは既定で現在のシステム全体のロック・タイムアウト設定になります。ODBC 接続を切断し、再接続する場合、現在のシステム全体のロック・タイムアウト設定を使用して再接続します。既定のシステム全体のロック・タイムアウトは、10 秒です。
ロックの競合、およびプロセスごとあるいはシステム全体の SQL ロック・タイムアウト設定の詳細は、"LOCK" コマンドを参照してください。
PKEY_IS_IDKEY
PKEY_IS_IDKEY ブーリアン・オプションでは、主キーもシステム全体で ID キーであるか否かを指定します。利用可能な値は TRUE と FALSE です。TRUE の場合、主キーは ID キーとして生成されます (つまり、テーブルの主キーはクラス定義の IDKey インデックスとなります)。これによりパフォーマンスは向上しますが、生成された主キーの変更はできないという制限も付きます。設定後は、主キーに割り当てられた値の変更や、別のキーを主キーに割り当てることはできません。このオプションを使用すると、主キーを照合する既定値も変更され、主キー文字列値は EXACT 照合を既定値に設定します。FALSE の場合、主キーと ID キーは別々に定義され、主キー値は変更可能となり、主キー文字列値は既定で現在の照合タイプの既定値になります。これは既定では SQLUPPER です。
PKEY_IS_IDKEY オプションを設定するには、%Admin_Manage:USE 特権が必要です。この特権がないと、SQLCODE -99 エラー (特権違反) になります。このオプションを一度設定すると、システム全体ですべてのプロセスに対して有効です。このオプションに対するシステム全体の既定は、次のような方法で設定できます。
-
$SYSTEM.SQL.SetDDLPKeyNotIDKey()Opens in a new tab メソッド呼び出し。現在の設定を確認するには、$SYSTEM.SQL.CurrentSettings()Opens in a new tab を呼び出します。
-
管理ポータルに進み、システム, 構成, 一般SQL設定 を選択します。[Are Primary Keys Created through DDL not ID Keys] の現在の設定を表示します。“はい” (1) に設定すると、主キー制約が DDL で指定されたときに、自動的にクラス定義の IDKey インデックスになりません。“いいえ” (0) の場合は、IDKey インデックスになります。この値を “いいえ” に設定すると、通常パフォーマンスが向上します。しかし主キーのフィールドを更新できなくなります。既定は “はい” です。
この PKEY_IS_IDKEY 設定は、他の SET OPTION PKEY_IS_IDKEY 経由でリセットするか、Caché 構成を再起動して、Caché システム構成の設定パラメータがリセットされるまで有効です。
SUPPORT_DELIMITED_IDENTIFIERS
SUPPORT_DELIMITED_IDENTIFIERS ブーリアン・オプションで、区切り識別子がシステム全体を通してサポートされるか否かを指定します。利用可能な値は TRUE と FALSE です。TRUE の場合、二重引用符で区切られた文字列は、SQL 文の識別子と考えられます。FALSE の場合、SQL 文の文字列リテラルと考えられます。
SUPPORT_DELIMITED_IDENTIFIERS オプションを設定するには、%Admin_Manage:USE 特権が必要です。この特権がないと、SQLCODE -99 エラー (特権違反) になります。このオプションを一度設定すると、システム全体ですべてのプロセスに対して有効です。この SUPPORT_DELIMITED_IDENTIFIERS 設定は、他の SET OPTION SUPPORT_DELIMITED_IDENTIFIERS 経由でリセットするか、Caché 構成を再起動して、管理ポータルのシステム構成の設定パラメータがリセットされるまで有効です。
このオプションに対するシステム全体の既定は、次のような方法で設定できます。
-
$SYSTEM.SQL.SetDelimitedIdentifiers()Opens in a new tab メソッド呼び出し。現在の設定を確認するには、$SYSTEM.SQL.CurrentSettings()Opens in a new tab を呼び出します。
-
管理ポータルに進み、システム, 構成, 一般SQL設定 を選択します。[Support Delimited Identifiers] の現在の設定が表示されます。
既定値は “はい” (1) です。“はい” に設定すると、区切り識別子がシステム全体でサポートされます。区切り識別子の詳細は、"Caché SQL の使用法" の “識別子“ の章を参照してください。
ロケール・オプション
ロケール・オプションは、現在のプロセスの日付、時刻、数値規則の Caché ロケール設定に使用するキーワード・オプションです。利用可能なキーワード・オプションは、AM、DATE_FORMAT、DATE_MAXIMUM、DATE_MINIMUM、DATE_SEPARATOR、DECIMAL_SEPARATOR、MIDNIGHT、MINUS_SIGN、MONTH_ABBR、MONTH_NAME、NOON、NUMERIC_GROUP_SEPARATOR、NUMERIC_GROUP_SIZE、PM、PLUS_SIGN、TIME_FORMAT、TIME_PRECISION、TIME_SEPARATOR、WEEKDAY_ABBR、WEEKDAY_NAME、および YEAR_OPTION です。これらのオプションはすべてリテラルに設定可能で、いずれも既定 (アメリカ英語記述規則) をとります。TIME_PRECISION オプションの設定は変更できます (以下を参照)。これらオプションのいずれかを無効な値に設定すると、Caché は、"SQLCODE -129 エラー (SET OPTION のロケール・プロパティの値が不正です)" を発行します。日付と時刻の形式およびオプションの詳細は、ObjectScript "$ZDATETIME" 関数を参照してください。
日付/時刻オプション・キーワード | 説明 |
---|---|
AM | 文字列。既定値は 'AM' です。 |
DATE_FORMAT | 整数。既定値は 1 です。使用できる値は 0 から 15 です。これらの日付形式の詳細は、ObjectScript "$ZDATE" 関数を参照してください。 |
DATE_MAXIMUM | 整数。既定値は 2980013 (12/31/9999) です。前の日付は設定できますが、後の日付はできません。 |
DATE_MINIMUM | 正整数。既定値は 0 (12/31/1840) です。後の日付は設定できますが、前の日付はできません。 |
DATE_SEPARATOR | 文字。既定値は '/' です。 |
DECIMAL_SEPARATOR | 文字。既定値は '.' です。 |
MIDNIGHT | 文字列。既定値は 'MIDNIGHT' です。 |
MINUS_SIGN | 文字。既定値は '-' です。 |
MONTH_ABBR | 文字列。既定値は 'Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec' です (この文字列は、既定の区切り文字である空白文字で始まります)。 |
MONTH_NAME | 文字列。既定値は 'January February March April May June ...November December' です。(この文字列は、既定の区切り文字である空白文字で始まります)。 |
NOON | 文字列。既定値は 'NOON' です。 |
NUMERIC_GROUP_SEPARATOR | 文字。既定値は ',' です。 |
NUMERIC_GROUP_SIZE | 整数。既定値は 3 です。 |
PM | 文字列。既定値は 'PM' です。 |
PLUS_SIGN | 文字。既定値は '+' です。 |
TIME_FORMAT | 整数。既定値は 1 です。使用できる値は 1 から 4 です。これらの時刻形式の詳細は、ObjectScript "$ZTIME" 関数を参照してください。 |
TIME_PRECISION | 0 ~ 9 の整数。既定値は 0。秒の小数部の桁数。以下のように設定できます。 |
TIME_SEPARATOR | 文字。既定値は ':' です。 |
WEEKDAY_ABBR | 文字列。既定値は 'Sun Mon Tue Wed Thu Fri Sat' です (この文字列は、既定の区切り文字である空白文字で始まります)。 |
WEEKDAY_NAME | 文字列。既定値は 'Sunday Monday Tuesday Wednesday Thursday Friday Saturday' です (この文字列は、既定の区切り文字である空白文字で始まります)。 |
YEAR_OPTION | 整数。既定値は 0 です。使用できる値は 0 から 6 です。2 桁および 4 桁の年のこれらの表示方法の詳細は、ObjectScript "$ZDATE" 関数を参照してください。 |
TIME_PRECISION をシステム全体で構成するには、管理ポータルに進み、システム, 構成, 一般SQL設定 を選択します。[GETDATE()、CURRENT_TIME、および CURRENT_TIMESTAMP の既定の時間精度] の現在の設定を表示して編集します。これは、秒の小数部の精度の桁数を示します。既定値は 0 です。有効な値の範囲は、0 ~ 9 桁の精度です。実際の秒の小数部の有効桁数はプラットフォームにより異なります。
関連項目
-
SQL 日付および時刻の関数 : CURRENT_TIMESTAMPDATEPARTDATENAMEGETDATENOW
-
SQL 日付関数 : DAYNAMEDAYOFWEEKDAYOFMONTHDAYOFYEARWEEKMONTHMONTHNAMEQUARTERYEARCURDATECURRENT_DATETO_DATE
-
SQL 時刻関数 : HOURMINUTESECONDCURTIMECURRENT_TIME
-
"Caché 詳細構成設定リファレンス" で説明されている SQL 構成設定
-
"Caché エラー・リファレンス" にリストされた SQLCODE エラー・メッセージ
-
ObjectScript 関数 : $ZDATE $ZDATETIME $ZTIME