更改数据库和连接选项的值。
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
选项值 使用语法 1,选项值可为以下各值之一:
使用语法 2,可将任何有效的标识符指定为选项值。使用语法 2,数据库服务器将标识符的名称按括在单引号内的字符串文字处理。例如,语句:
SET TEMPORARY OPTION ansi_update_constraints = 'strict'; |
等效于
SET TEMPORARY OPTION ansi_update_constraints = strict; |
SET OPTION 语句用于更改影响数据库服务器行为的选项。设置选项值可更改所有用户(公共)、个别用户或当前连接的行为。新设置可以是临时的,也可以是永久的。
可用 SET OPTION 语句设置的选项分类为:
有关 Interactive SQL 选项的信息,请参见Interactive SQL 选项。
选项范围 可将大多数选项的值设置为三种级别的作用域:公共、用户和连接。某些特定选项(如 login_mode)被严格限制为公共级别。连接选项优先于另外两个选项,而用户选项优先于公共选项。使用 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 语句可建立该选项的自定义设置。
限制 只有拥有 DBA 权限的用户才有权设置 PUBLIC 用户 ID 的选项或其他数据库用户的选项。
如果使用 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'; |
以下是嵌入式 SQL 的示例:
EXEC SQL SET TEMPORARY OPTION date_format = :value; |
为当前连接的用户设置 date_format 选项。在以后连接时,同一用户 ID 将使用此选项值。
SET OPTION date_format = 'yyyy/mm/dd'; |
以下语句删除当前用户 ID 的 date_format 选项的设置。执行此语句后,将改用针对 PUBLIC 组的 date_format 设置。
SET OPTION date_format=; |
![]() |
使用DocCommentXchange 讨论此页。
|
版权 © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |