Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL リファレンス » SQL の使用 » SQL 文 » SQL 文 (P ~ Z)

 

SET OPTION 文

この文は、データベース・オプションの値を変更するために使用します。

構文
SET [ EXISTING ] [ TEMPORARY ] OPTION
 [ userid.| PUBLIC.]option-name = [ option-value ]
userid : identifier, string, または hostvar
option-name : identifier
option-value : string literal
Embedded SQL 構文
SET [ TEMPORARY ] OPTION
 [ userid.| PUBLIC.]option-name = [ option-value ]
userid : identifier, string, または hostvar
option-name : identifier, string, または hostvar
option-value : hostvar (許容されたインジケータ), string, identifier, または number
備考

SET OPTION 文を使用すると、データベース・サーバの動作に影響を及ぼすオプションを変更できます。オプションの値を設定すると、すべてのユーザまたは個々のユーザだけの動作を変更できます。変更のスコープは、テンポラリまたは永続的のどちらかを指定できます。

どのようなオプションでも、ユーザ定義であるかどうかにかかわらず、パブリック設定がなければユーザ固有の値を割り当てることはできません。データベース・サーバでは、ユーザ定義オプションへの TEMPORARY 値の設定はサポートされていません。

オプションのクラスは次のとおりです。

使用可能なすべてのオプションの一覧と説明については、データベース・オプションを参照してください。

オプションは、パブリック、ユーザ、テンポラリの 3 つのスコープ・レベルで設定できます。テンポラリ・オプションは他のオプションより優先され、ユーザのオプションはパブリック・オプションより優先されます。現在のユーザに対してユーザ・レベルのオプションを設定すると、対応するテンポラリ・オプションも設定されます。

構文 1 では、option-value にホスト変数を指定できません。ただし、代わりに EXECUTE IMMEDIATE 文を使用して、同じことを実現できる場合があります。EXECUTE IMMEDIATE 文 [SP]を参照してください。

EXISTING キーワードを使用した場合、個別のユーザ ID のオプション値は、そのオプションにすでに PUBLIC ユーザ ID 設定が行われていないかぎり、設定できません。

ユーザ ID を指定すると、オプション値がそのユーザ (またはグループのメンバであるグループ・ユーザ ID) に適用されます。PUBLIC に指定すると、オプション値はそのオプションに個々の設定を持たないすべてのユーザに適用されます。デフォルトでは、オプション値は SET OPTION 文を発行する、現在ログオンしているユーザ ID に適用されます。

たとえば、次の文は、DBA が SQL 文を発行しているユーザである場合、ユーザ DBA にオプションの変更を適用します。

SET OPTION precision = 40;

しかし、次の文は、すべてのユーザが属するユーザ・グループである PUBLIC ユーザ ID に変更を適用します。

SET OPTION Public.login_mode = Standard;

DBA 権限を持つユーザのみ、PUBLIC ユーザ ID にオプションを設定する権限を持ちます。

SETOPTION 文を使用すると、自分のユーザ ID の値を変更できます。他のユーザのユーザ ID のオプション値を設定できるのは、DBA 権限を持っている場合だけです。

SET OPTION 文に TEMPORARY キーワードを追加すると、変更の効果の継続期間を変更できます。デフォルトでは、オプション値は永久で、SET OPTION 文を使用して明示的に変更されるまで変わりません。

SET TEMPORARY OPTION 文がユーザ ID で修飾されていない場合、新しいオプション値は現在の接続のみで有効です。

PUBLIC ユーザ ID を使用して SET TEMPORARY OPTION を使用すると、データベースの実行中はその変更が継続します。データベースを停止すると、PUBLIC グループの TEMPORARY オプションは永久値に戻ります。

PUBLIC ユーザ ID のテンポラリ・オプションを設定すると、セキュリティの利点を提供します。たとえば、login_mode オプションが有効なときは、データベースは実行中のシステムのログイン・セキュリティに依存します。このオプションを一時的に有効にすると、Windows ドメインのセキュリティに依存しているデータベースは、データベースが停止し、ローカル・コンピュータにコピーされるといった場合でも、危険にさらされることはありません。この場合、login_mode オプションを一時的に有効にしてあると、オプションは永久値の Standard に戻ります。このモードでは、統合化ログインを使用できません。

option-value を省略すると、指定したオプション設定がデータベースから削除されます。これが個人的なオプション設定の場合は、値は PUBLIC 設定に戻ります。TEMPORARY オプションを削除すると、オプション設定は永久設定に戻ります。

警告

カーソルからローをフェッチしている間のオプション設定変更は、動作の定義を曖昧にすることになるため、サポートされていません。たとえば、カーソルからフェッチしている間に date_format 設定を変えると、結果セットのロー同士の日付フォーマットが異なってしまいます。ローをフェッチしている間にオプション設定を変更しないでください。

SET OPTION 文は、SQL FLAGGER で無視されます。

パーミッション

ユーザ自身のオプションを設定するには、権限は必要ありません。

別のユーザまたは PUBLIC に対してデータベース・オプションを設定するには、DBA 権限が必要です。

関連する動作

TEMPORARY を指定しない場合、オートコミットが実行されます。

参照
標準と互換性
  • SQL/2003   ベンダ拡張。

日付フォーマット・オプションをオンに設定します。

SET OPTION public.date_format = 'Mmm dd yyyy';

wait_for_commit オプションを On に設定します。

SET OPTION wait_for_commit = 'On';

次に ESQL の例を 2 つ示します。

1. EXEC SQL SET OPTION :user.:option_name = :value;
2. EXEC SQL SET TEMPORARY OPTION date_format = 'mm/dd/yyyy';

現在接続されているユーザに対して date_format オプションを設定します。同じユーザ ID による以降の接続では、このオプション値が使用されます。

SET OPTION date_format = 'yyyy/mm/dd';

次の文は、現在のユーザ ID の date_format オプションを削除します。この文の実行後、date_format の設定としては PUBLIC が代わりに使用されます。

SET OPTION date_format=;