実行オプションを設定します。
Synopsis
SET OPTION option_keyword = value
SET OPTION 文では、コンパイル・モード、SQL 構成設定、および日付、時刻、数値規則を管理するロケール設定などの、実行オプションを設定します。
SET OPTION 文では、キーワード・オプションを 1 つのみ設定できます。
他の
SET OPTION 引数 (ここには記載されていません) は、Caché で SQL 互換性に対し解析されますが、実行はしません。
SET OPTION では、準備および実行が即座に行われ、通常一度しか実行されないため、ODBC、JDBC、またはダイナミック SQL で
SET OPTION 用のクエリ・キャッシュは作成されません。
Caché でサポートされているオプションは以下のとおりです。
BLOB_SUPPORT ブーリアン・オプションでは、ストリーム・サポートのロジックをシステム全体で無効または有効にします。使用可能な値は、0 と 1 です。ロジックを無効にした際 (BLOB_SUPPORT = 0)、ストリーミング・データはサポートされません。すべての LONGVARCHAR と LONGVARBINARY は VARCHAR と VARBINARY 同様に扱われます。既定値は 1 です。
COMPILEMODE オプションを使用して、現在のネームスペースのコンパイル・モードを、DEFERRED、IMMEDIATE、または INSTALL に設定します。既定値は IMMEDIATE です。DEFERRED から IMMEDIATE コンパイル・モードへ変更すると、Deferred Compile Queue のいずれのクラスもすぐにコンパイルされるようになります。すべてのクラスのコンパイルが成功すると、SQLCODE は 0 を返します。エラーがある場合は、-400 を返します。クラス・コンパイルのエラーは ^mtemp2 ("Deferred Compile Mode","Error") に記録されています。SQLCODE=-400 が発生した場合は、このグローバル構造を表示して、エラーの詳細メッセージを調べます。INSTALL コンパイル・モードは DEFERRED コンパイル・モードと似ていますが、テーブルにデータがない DDL インストールにのみ使用してください。
LOCK_TIMEOUT 数値オプションで、SQL 実行中に構築される現在のプロセスのロックにタイムアウト (秒数) の設定ができます。このロック・タイムアウトは、グローバル参照で SQL コードの挿入、更新、削除、および選択にロックをかける必要がある際に使用します。使用できる値は、正の整数です。タイムアウトの設定はプロセスごとに行います。ODBC 接続を切断し、再接続する場合、システム全体の既定のタイムアウト設定を使用して再接続します。既定のシステム全体のロック・タイムアウトは、10 秒です。この既定値は、以下のように構成できます。
-
ObjectScript $SYSTEM.SQL.SetLockTimeout() 関数呼び出し。現在の設定を確認するには、$SYSTEM.SQL.CurrentSettings() を呼び出します。
-
PKEY_IS_IDKEY ブーリアン・オプションでは、主キーもシステム全体で ID キーであるか否かを指定します。利用可能な値は TRUE と FALSE です。TRUE の場合、主キーは ID キーとして生成されます (つまり、テーブルの主キーはクラス定義の IDKey インデックスとなります)。これによりパフォーマンスは向上しますが、生成された主キーの変更はできないという制限も付きます。設定後は、主キーに割り当てられた値の変更や、別のキーを主キーに割り当てることはできません。このオプションを使用すると、主キーを照合する既定値も変更され、主キー文字列値は EXACT 照合を既定値に設定します。FALSE の場合、主キーと ID キーは別々に定義され、主キー値は変更可能ですが、主キー文字列値は SQLUPPER 照合を既定に設定します。
PKEY_IS_IDKEY オプションを設定するには、%Admin_Manage:USE 特権が必要です。この特権がないと、SQLCODE -99 (特権違反) になります。このオプションを一度設定すると、システム全体ですべてのプロセスに対して有効です。このオプションに対するシステム全体の既定は、次のような方法で設定できます。
-
ObjectScript $SYSTEM.SQL.SetDDLPKeyNotIDKey() 関数呼び出し。現在の設定を確認するには、$SYSTEM.SQL.CurrentSettings() を呼び出します。
-
この 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é 構成を再起動して、
[システム管理ポータル] のシステム構成の設定パラメータがリセットされるまで有効です。
このオプションに対するシステム全体の既定は、次のような方法で設定できます。
-
ObjectScript $SYSTEM.SQL.SetDelimitedIdentifiers() 関数呼び出し。現在の設定を確認するには、$SYSTEM.SQL.CurrentSettings() を呼び出します。
-
既定は
偽 (false) (0) です。
真 (1) に設定すると、区切り識別子がシステム全体でサポートされます。区切り識別子の詳細は、このドキュメントの "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 です。これらのオプションはすべてリテラルに設定可能で、いずれも既定 (アメリカ英語記述規則) をとります。これらオプションのいずれかを無効な値に設定すると、「SQLCODE=-129 エラー (
SET OPTION のロケール・プロパティの値が不正です)」が返されます。日付と時刻形式とオプションの詳細は、Caché ObjectScript "
$ZDATETIME" 関数を参照してください。