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 语句 [T-SQL]

此语句用于为当前连接设置与 Adaptive Server Enterprise 兼容的数据库选项。

语法
SET option-name option-value
注释

可用选项如下:

选项名称 选项值
ansinull On 或 Off
ansi_permissions On 或 Off
close_on_endtrans On 或 Off
datefirst

1、2、3、4、5、6 或 7

此选项的设置在获取工作日值时会影响 DATEPART 函数。

有关指定每周第一天的详细信息,请参见first_day_of_week 选项 [数据库]DATEPART 函数 [Date and time]

quoted_identifier On | Off
rowcount integer
self_recursion On | Off
string_rtruncation On | Off
textsize integer
transaction isolation level 0、1、2、3、snapshot、statement snapshot 或 read only statement snapshot

在 SQL Anywhere 中,用 SET OPTION 语句设置数据库选项。不过,SQL Anywhere 还支持用 Adaptive Server Enterprise 的 SET 语句设置对兼容性有用的选项。

在 SQL Anywhere 和 Adaptive Server Enterprise 中,可以用 Transact-SQL SET 语句设置以下选项:

  • SET ansinull { On | Off }   在 SQL Anywhere 和 Adaptive Server Enterprise 中,比较值与 NULL 的缺省行为是不同的。将 ansinull 设置为 Off 可提供与 Transact-SQL 兼容的 NULL 比较。

    SQL Anywhere 还支持以下语法:

    SET ansi_nulls { On | Off }

    有关详细信息,请参见ansinull 选项 [兼容性]

  • SET ansi_permissions { On | Off }   在 SQL Anywhere 和 Adaptive Server Enterprise 中,关于执行含有列引用的 UPDATE 或 DELETE 所需权限的缺省行为是不同的。将 ansi_permissions 设置为 Off 可提供与 Transact-SQL 兼容的 UPDATE 和 DELETE 权限。请参见ansi_permissions 选项 [兼容性]

  • SET close_on_endtrans { On | Off }   在 SQL Anywhere 和 Adaptive Server Enterprise 中,在事务结束时关闭游标的缺省行为是不同的。将 close_on_endtrans 设置为 Off 可提供与 Transact-SQL 兼容的行为。请参见close_on_endtrans 选项 [兼容性]

  • SET datefirst { 1 | 2 | 3 | 4 | 5 | 6 | 7 }   缺省值为 7,即在缺省情况下,每周的第一天是星期日。要永久设置此选项,请参见first_day_of_week 选项 [数据库]

  • SET quoted_identifier { On | Off }   控制用双引号括起来的字符串是被解释为标识符 (On) 还是文字字符串 (Off)。请参见为实现 Transact-SQL 兼容性设置选项quoted_identifier 选项 [兼容性]

  • SET rowcount   integer Transact-SQL ROWCOUNT 选项将为所有游标读取的行数限制为指定的整数。这包括通过重新定位游标读取的行。超出此最大值的所有读取操作都返回警告。当应 OPEN 请求返回游标的行数估计值时应考虑该选项设置。

    SET ROWCOUNT 还将受搜索的 UPDATE 或 DELETE 语句影响的行数限制为 integer。例如,这可以用来允许 COMMIT 语句定期执行,以限制回退日志和锁定表的大小。应用程序(或过程)需要提供一个循环,为未受第一个操作影响的行重新发出更新/删除命令。下面给出了一个简单示例:

    BEGIN
       DECLARE @count INTEGER
       SET rowcount 20
       WHILE(1=1) BEGIN
          UPDATE Employees SET Surname='new_name'
          WHERE Surname <> 'old_name'
          /* Stop when no rows changed */
          SELECT @count = @@rowcount
          IF @count = 0 BREAK
          PRINT string('Updated ',
                   @count,' rows; repeating...')
          COMMIT
       END
       SET rowcount 0
    END

    在 SQL Anywhere 中,如果 ROWCOUNT 设置比 Interactive SQL 可显示的行数大,则 Interactive SQL 可能会执行一些额外的读取以重新定位游标。因此,实际显示的行数可能比请求的数目少。另外,如果由于截断警告而重新读取任何行,计数可能不准确。

    如果值为零,则重置该选项以获取所有行。

  • SET self_recursion { On | Off }   self_recursion 选项用于在触发器中启用 (On) 或禁止 (Off) 与触发器关联的表的操作触发其它触发器。

  • SET string_rtruncation { On | Off }   在 SQL Anywhere 和 Adaptive Server Enterprise 中,指派 SQL 字符串数据时截断非空格字符的缺省行为是不同的。将 string_rtruncation 设置为 On 可提供与 Transact-SQL 兼容的字符串比较。请参见string_rtruncation 选项 [兼容性]

  • SET textsize   指定使用 select 语句返回的文本或图像类型数据的最大大小(以字节为单位)。@@textsize 全局变量存储当前设置。要重置为缺省大小 (32 KB),请使用下面的命令:
    set textsize 0

  • SET transaction isolation level { 0 | 1 | 2 | 3 | snapshot | statement snapshot | read only statement snapshot }   设置当前连接的锁定隔离级别,如隔离级别和一致性中所述。对于 Adaptive Server Enterprise,只有 1 和 3 是有效选项。对于 SQL Anywhere,0、1、2、3、snapshot、statement snapshot 和 read only statement snapshot 的任一项都是有效选项。请参见isolation_level 选项 [数据库] [兼容性]

出于兼容性考虑,SQL Anywhere 允许用 SET 语句设置 prefetch 选项,但没有效果。

权限

无。

副作用

无。

另请参见
标准和兼容性
  • SQL/2003   Transact-SQL 扩充。