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 语言元素 » 变量

 

全局变量

全局变量的值由数据库服务器设置。例如,全局变量 @@version 的值是数据库服务器的当前版本号。

全局变量的名称前有两个 @ 符号,以便与局部和连接级变量加以区分。例如,@@error 和 @@rowcount 都是全局变量。用户不能创建全局变量,也不能直接更新全局变量的值。

有些全局变量(如 @@identity)保存特定于连接的信息,因此具有特定于连接的值。其它变量(如 @@connections)则具有所有连接共有的值。

全局变量和特殊常量

特殊常量(例如 CURRENT DATE、CURRENT TIME、USER 和 SQLSTATE)类似于全局变量。

以下语句检索版本全局变量的值。

SELECT @@version;

在过程和触发器中,全局变量可以选入变量列表。以下过程用参数 ver 返回服务器版本号。

CREATE PROCEDURE VersionProc ( OUT ver VARCHAR(100) )
 BEGIN
   SELECT @@version
   INTO ver;
 END;

在嵌入式 SQL 中,全局变量可以选入主机变量列表。

全局变量列表

下表列出了 SQL Anywhere 中可用的全局变量。有些全局变量是为与 Transact-SQL 相兼容而提供的,它们会返回固定值 0、1 或 NULL(见下文)。

变量名称 含义
@@char_convert 0(用于与 Transact-SQL 兼容。)
@@client_csid -1(用于与 Transact-SQL 兼容。)
@@client_csname NULL(用于与 Transact-SQL 兼容。)
@@connections 自服务器上次启动后的登录数。
@@cpu_busy 0(用于与 Transact-SQL 兼容。)
@@dbts 一个 TIMESTAMP 类型的值,表示上次生成的值,用于以 DEFAULT TIMESTAMP 定义的所有列。
@@error

检查最近执行的语句是成功还是失败的 Transact-SQL 错误代码。如果前一个事务成功,则返回 0。如果前一个事务未成功,则返回由系统生成的上一个错误编号。要查看 @@error 返回的值的说明,请参见Transact-SQL 过程中的错误处理

如果发生错误,if @@error != 0 return 这样的语句会导致退出。每个语句(包括 PRINT 语句或 IF 测试)都重置 @@error,因此必须在想要验证其是否成功的语句之后立即执行状态检查。

@@fetch_status

包含上次读取语句所产生的状态信息。此功能与 @@sqlstatus 相同,只不过它返回的值不同。这是为了与 Microsoft SQL Server 兼容。@@fetch_status 可包含以下值:

  • 0 - 读取语句成功完成。

  • -1 - 读取语句导致错误。

  • -2 - 结果集中没有其它数据。

@@identity 上次用 INSERT 或 SELECT INTO 语句插入到任何 IDENTITY 或 DEFAULT AUTOINCREMENT 列中的值。请参见@@identity 全局变量
@@idle 0(用于与 Transact-SQL 兼容。)
@@io_busy 0(用于与 Transact-SQL 兼容。)
@@isolation 当前连接的隔离级别。@@isolation 采用活动级别的值。
@@langid 当前连接所用语言的唯一语言 ID。
@@language 连接所用语言的名称。
@@max_connections 对于个人服务器,为可与服务器建立的同步连接的最大数目,即为 10。对于网络服务器,为活动客户端(而非数据库连接,因为每个客户端可支持多个连接)的最大数目。
@@maxcharlen CHAR 字符集中的最大字符长度(以字节为单位)。
@@ncharsize NCHAR 字符集中的最大字符长度(以字节为单位)。
@@nestlevel -1(用于与 Transact-SQL 兼容。)
@@pack_received 0(用于与 Transact-SQL 兼容。)
@@pack_sent 0(用于与 Transact-SQL 兼容。)
@@packet_errors 0(用于与 Transact-SQL 兼容。)
@@procid 当前执行的过程的存储过程 ID。
@@rowcount

受上一语句影响的行数。应在该语句后立即检查 @@rowcount 的值。

插入、更新和删除会将 @@rowcount 设置为受影响的行数。

在带有游标的情况下,@@rowcount 表示从游标结果集返回给客户端的累计行数(截止到上次读取请求)。

任何不影响行的语句(如 IF 语句)都不将 @@rowcount 重置为零。

@@servername 当前数据库服务器的名称。
@@spid 当前连接的连接句柄。该值与 sa_conn_info 过程显示的值相同。
@@sqlstatus

包含上次读取语句所产生的状态信息。@@sqlstatus 可以包含下列值:

  • 0 - 读取语句成功完成。

  • 1 - 读取语句导致错误。

  • 2 - 结果集中没有其它数据。

@@textsize 返回 SET TEXTSIZE 选项的当前值,它指定了用选择语句返回的文本和图形数据的最大长度(以字节为单位)。缺省设置为 32765,这是用 READTEXT 可返回的最大字节字符串。也可用 SET 语句设置该值。
@@thresh_hysteresis 0(用于与 Transact-SQL 兼容。)
@@timeticks 0(用于与 Transact-SQL 兼容。)
@@total_errors 0(用于与 Transact-SQL 兼容。)
@@total_read 0(用于与 Transact-SQL 兼容。)
@@total_write 0(用于与 Transact-SQL 兼容。)
@@tranchained 当前事务模式;0(非链接模式)或 1(链接模式)。
@@trancount 事务的嵌套级别。批处理中的各 BEGIN TRANSACTION 都增加事务计数。
@@transtate -1(用于与 Transact-SQL 兼容。)
@@version SQL Anywhere 当前版本的版本号。

@@identity 全局变量