SET SERVER OPTION ステートメント

SET SERVER OPTION ステートメントは、 ユーザーまたはアプリケーションがフェデレーテッド・データベースに接続中に有効となる、 サーバー・オプションの設定値を指定します。 接続が終了すると、このサーバー・オプションの以前の設定値が復元されます。

このステートメントは、トランザクションの制御下にありません。

呼び出し

このステートメントは、対話式に発行することができます。 このステートメントは、動的に作成できる実行可能ステートメントです。

許可

必要ありません。

構文

Read syntax diagramSkip visual syntax diagramSET SERVER OPTIONserver-option-name TOstring-constantFORSERVERserver-name

説明

サーバー・オプション名
設定するサーバー・オプションを指名します。
TO ストリング定数
server-option-name の設定を、文字ストリング定数として指定します。
サーバー server-name
server-option-name が適用されるデータ・ソースを指定します。 これは、カタログに記述されているサーバーでなければなりません。

  • サーバー・オプション名は、大文字または小文字で入力することができます。
  • ユーザーまたはアプリケーションがフェデレーテッド・データベースに接続する際、 1 つまたは複数の SET SERVER OPTION ステートメントをサブミットすることができます。 このステートメント (複数可) は、接続が確立した後、 最初に処理される作業単位の初めに指定する必要があります。
  • SYSCAT.SERVEROPTIONS は SET SERVER OPTION ステートメントに基づいては更新されません。 この変更内容は現行接続だけに影響を与えるからです。
  • 静的 SQL の場合、SET SERVER OPTION ステートメントの使用は、その静的 SQL ステートメントの実行だけに影響します。 SET SERVER OPTION ステートメントを使用しても、オプティマイザーによって生成されたプランは影響を受けません。

  • 例 1: DJDB というフェデレーテッド・データベースに、 ORASERV という Oracle データ・ソースを定義します。 ORASERV は、プランのヒントを使用できないように構成されます。 しかし、DBA は新しいアプリケーションを試験的に実行するため、 プランのヒントを使用できるようにすることを希望しています。 実行を終了すると、プランのヒントは再度使用不可になります。
       CONNECT TO DJDB;
       strcpy(stmt,"set server option plan_hints to 'Y' for server oraserv");
       EXEC SQL EXECUTE IMMEDIATE :stmt;
       strcpy(stmt,"select c1 from ora_t1 where c1 > 100"); /*Generate plan hints*/
       EXEC SQL PREPARE s1 FROM :stmt;
       EXEC SQL DECLARE c1 CURSOR FOR s1;
       EXEC SQL OPEN c1;
       EXEC SQL FETCH c1 INTO :hv;
  • 例 2: すべての Oracle 8 データ・ソースで、サーバー・オプション PASSWORD を 'Y' (データ・ソースでパスワードを妥当性検査する) に設定しました。 しかし、特定の Oracle 8 データ・ソース (フェデレーテッド・データベース DJDB に ORA8A-passwords と定義されているデータ・ソース) にアクセスするために、アプリケーションがフェデレーテッド・データベースに接続するような特定のセッションの場合、パスワードを妥当性検査する必要はありません。
       CONNECT TO DJDB;
       strcpy(stmt,"set server option password to 'N' for server ora8a");
       EXEC SQL PREPARE STMT_NAME FROM :stmt;
       EXEC SQL EXECUTE STMT_NAME FROM :stmt;
       strcpy(stmt,"select max(c1) from ora8a_t1");
       EXEC SQL PREPARE STMT_NAME FROM :stmt;
       EXEC SQL DECLARE c1 CURSOR FOR STMT_NAME;
       EXEC SQL OPEN c1; /*Does not validate password at ora8a*/
       EXEC SQL FETCH c1 INTO :hv;