データベースオプションと接続オプションの値を変更します。
SET [ EXISTING ] [ TEMPORARY ] OPTION [ userid.| PUBLIC.]option-name = [ option-value ]
SET [ EXISTING ] [ TEMPORARY ] OPTION [ userid.| PUBLIC.]option-name = [ identifier ]
userid : identifier
option-name : identifier
option-value : ON, OFF, NULL, string literal, number, hostvar, or @variable-name
option-value 構文 1 では、option-value は次のいずれかです。
構文 2 では、任意の有効な識別子をオプション値として指定できます。また、識別子の名前は、一重引用符で囲んだ文字列リテラルであるかのように扱われます。たとえば、次の 2 つの文は同等です。
SET TEMPORARY OPTION ansi_update_constraints = 'strict'; |
SET TEMPORARY OPTION ansi_update_constraints = strict; |
SET OPTION 文を使用すると、データベースサーバーの動作に影響を及ぼすオプションを変更できます。オプションの値を設定すると、すべてのユーザー (パブリック)、個々のユーザー、または現在の接続の動作を変更できます。新しい設定は、テンポラリ設定にも永久設定にもできます。
SET OPTION 文で設定できるオプションのクラスは次のとおりです。
オプションのスコープ ほとんどのオプションでは、3 つのレベルのスコープ (パブリック、ユーザー、接続) で値を設定できます。login_mode などの一部の特定のオプションはパブリックレベルのみに制限されます。接続オプションは他の 2 つのレベルよりも優先され、ユーザーオプションはパブリックオプションよりも優先されます。接続レベルのオプションは、TEMPORARY キーワードを使用して設定します。現在のユーザーに対してユーザーレベルのオプションを設定すると、対応する接続レベルのオプションも同時に設定されます。
ユーザー ID を指定すると、そのユーザーにオプション値が適用されます。PUBLIC に指定すると、オプション値はそのオプションに個々の設定を持たないすべてのユーザーに適用されます。デフォルトでは、オプション値は SET OPTION 文を実行した現在ログオン中のユーザー ID に適用されます。
たとえば、次の文は、DBA が SQL 文を実行しているユーザーである場合、ユーザー DBA にオプションの変更を適用します。
SET OPTION precision = 40; |
ただし、次の文は、すべてのユーザーが属するグループである PUBLIC ユーザー ID に変更を適用します。
SET OPTION PUBLIC.login_mode = 'Standard'; |
TEMPORARY オプション デフォルトでは、TEMPORARY キーワードを指定しないかぎり、新しいオプション値は永久値になります。SET OPTION 文に TEMPORARY キーワードを追加すると、変更の適用期間に影響します。
SET TEMPORARY OPTION 文がユーザー ID で修飾されていない場合、新しいオプション値は現在の接続のみで有効です。
PUBLIC ユーザー ID を使用して SET TEMPORARY OPTION を使用すると、データベースの実行中はその変更が継続します。データベースを停止すると、PUBLIC グループの TEMPORARY オプションは永久値に戻ります。
PUBLIC ユーザー ID のテンポラリオプションを設定すると、セキュリティの利点を提供します。たとえば、login_mode オプションが有効なときは、データベースは実行中のシステムのログインセキュリティに依存します。このオプションを一時的に有効にすると、Windows ドメインのセキュリティに依存しているデータベースは、データベースが停止し、ローカルコンピューターにコピーされるといった場合でも、危険にさらされることはありません。この場合、login_mode オプションを一時的に有効にしてあると、オプションは永久値の Standard に戻ります。このモードでは、統合化ログインを使用できません。
オプション設定の削除 option-value を省略すると、指定したオプション設定がデータベースから削除されます。これがユーザーレベルのオプション設定の場合、値は PUBLIC 設定に戻ります。TEMPORARY オプションを削除すると、オプション設定はそのユーザーの永久設定に戻ります。
オプションのデータ型 オプションは、ブール値、数値、または文字列値にできますが、データベースには常に文字列として格納されます。オプション設定は、プロパティ関数の結果として返される場合や、関数またはシステムストアドプロシージャーの結果として返される場合、常に文字列として返されます。オプション値は、データベースページサイズよりも大きい値には設定できません。
ユーザー定義のオプション どのようなオプションでも、ユーザー定義であるかどうかにかかわらず、パブリック設定がなければユーザー固有の値を割り当てることはできません。データベースサーバーでは、ユーザー定義オプションへの TEMPORARY 値の設定はサポートされていません。たとえば、ApplicationControl という名前のユーザー定義のオプションを作成するには、まず次の文を実行します。
SET OPTION PUBLIC.ApplicationControl = 'Default'; |
この文は、すべてのユーザーに対して ApplicationControl オプションを Default に設定し、サーバーへの新しい接続ごとに有効にします。その後、個々のユーザーで別個に SET OPTION 文を実行して、このオプションの独自の設定を確立できます。
制限 PUBLIC ユーザー ID または他のデータベースユーザーに対してオプションを設定できるのは、DBA 権限を持つユーザーのみです。
EXISTING キーワードを使用した場合、個別のユーザー ID のオプション値は、そのオプションにすでに PUBLIC ユーザー ID 設定が行われていないかぎり、設定できません。
オープンカーソルからローをフェッチしているときにオプション設定を変更しないでください。変更すると、動作が不適切に定義され、セマンティックが保証されなくなる可能性があります。たとえば、カーソルからフェッチしている間に date_format 設定を変えると、結果セットのロー同士の日付フォーマットが異なってしまいます。
接続またはユーザーの特定のオプションの値に対するクエリを実行するには、いくつかの方法があります。
SET OPTION 文は、SQL Flagger で無視されます。
ユーザー自身のオプションを設定するには、権限は必要ありません。
別のユーザーまたは PUBLIC に対してデータベースオプションを設定するには、DBA 権限が必要です。
TEMPORARY を指定しない場合、オートコミットが実行されます。
SQL/2008 ベンダー拡張。
個別に設定することなく、すべてのユーザーの日付フォーマットオプションを設定します。
SET OPTION PUBLIC.date_format = 'Mmm dd yyyy'; |
wait_for_commit オプションを On に設定します。
SET OPTION wait_for_commit = 'On'; |
次は、Embedded SQL の例です。
EXEC SQL SET TEMPORARY OPTION date_format = :value; |
現在接続されているユーザーに対して date_format オプションを設定します。同じユーザー ID による以降の接続では、このオプション値が使用されます。
SET OPTION date_format = 'yyyy/mm/dd'; |
次の文は、現在のユーザー ID の date_format オプションを削除します。この文の実行後、date_format の設定としては PUBLIC が代わりに使用されます。
SET OPTION date_format=; |
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |