为当前连接设置与 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 函数。 |
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 在 SQL Anywhere 和 Adaptive Server Enterprise 中,比较值与 NULL 的缺省行为是不同的。将 ansinull 设置为 Off 可提供与 Transact-SQL 兼容的 NULL 比较。
SQL Anywhere 还支持以下语法:
SET ansi_nulls { On | Off }
SET ansi_permissions 在 SQL Anywhere 和 Adaptive Server Enterprise 中,关于执行含有列引用的 UPDATE 或 DELETE 所需特权的缺省行为是不同的。将 ansi_permissions 设置为 Off 可提供与 Transact-SQL 兼容的 UPDATE 和 DELETE 特权。
SET close_on_endtrans 在 SQL Anywhere 和 Adaptive Server Enterprise 中,在事务结束时关闭游标的缺省行为是不同的。将 close_on_endtrans 设置为 Off 可提供与 Transact-SQL 兼容的行为。
SET datefirst 缺省值为 7,即在缺省情况下,每周的第一天是星期日。
SET quoted_identifier 控制用双引号括起来的字符串是被解释为标识符 (On) 还是文字字符串 (Off)。
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 GROUPO.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 |
如果 ROWCOUNT 设置比 Interactive SQL 可显示的行数大,则 Interactive SQL 可能会执行一些额外的读取以重新定位游标。因此,实际显示的行数可能比请求的数目少。另外,如果由于截断警告而重新读取任何行,计数可能不准确。
如果值为零,则重置该选项以获取所有行。
SET self_recursion self_recursion 选项用于在触发器中启用 (On) 或禁止 (Off) 与触发器关联的表的操作触发其它触发器。
SET string_rtruncation 在 SQL Anywhere 和 Adaptive Server Enterprise 中,指派 SQL 字符串数据时截断非空格字符的缺省行为是不同的。将 string_rtruncation 设置为 On 可提供与 Transact-SQL 兼容的字符串比较。
SET textsize 指定使用 SELECT 语句返回的 TEXT 或 IMAGE 类型数据的最大大小(以字节为单位)。@@textsize 全局变量存储当前设置。要重置为缺省大小 (32 KB),请使用下面的命令:
SET transaction isolation level 设置当前连接的锁定隔离级别。
对于 Adaptive Server Enterprise,只有 1 和 3 是有效选项。对于 SQL Anywhere,0、1、2、3、snapshot、statement snapshot 和 read only statement snapshot 的任一项都是有效选项。
出于兼容性考虑,SQL Anywhere 允许用 SET 语句设置 prefetch 选项,但没有效果。
无。
无。
SQL/2008 Transact-SQL 扩充。
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2013, SAP 股份公司或其关联公司. - SAP Sybase SQL Anywhere 16.0 |