【IT专家网独家】在SQL Server中全局变量是种特殊类型变量,服务器将维护这些变量值全局变量以@@前缀开头,不必进行声明,它们属于系统定义下表就是SQL Server中些常用全局变量
全局变量名称
描述
@@CONNECTIONS
返回 SQL Server 自上次启动以来尝试连接数
@@CPU_BUSY
返回 SQL Server 自上次启动后工作时间
@@CURSOR_ROWS
返回连接上打开上个游标中当前限定行数目
确定当其被时检索了游标符合条件行数
@@DATEFIRST
针对会话返回 SET DATEFIRST 当前值SET DATEFIRST 表示指定
每周第天
@@DBTS
返回当前数据库当前 timestamp 数据类型值
这时间戳值在数据库中必须是唯
@@ERROR
返回执行上个 Transact-SQL 语句号
如果前个 Transact-SQL 语句执行没有则返回 0
@@FETCH_STATUS
返回针对连接当前打开任何游标发出上条游标 FETCH
语句状态
@@IDENTITY
返回上次插入标识值
@@IDLE
返回 SQL Server 自上次启动后空闲时间结果以 CPU 时间
增量或“时钟周期”表示并且是所有 CPU 累积
@@IO_BUSY
返回自从 SQL Server 最近次启动以来Microsoft SQL Server
已经用于执行输入和输出操作时间其结果是 CPU 时间增量
(时钟周期)并且是所有 CPU 累积值
@@LANGID
返回当前使用语言本地语言标识符 (ID)
@@LANGUAGE
返回当前所用语言名称
@@LOCK_TIMEOUT:
返回当前会话当前锁定超时设置(毫秒)
@@MAX_CONNECTIONS
返回 SQL Server 例子允许同时进行最大用户连接数
返回数值不定是当前配置数值
@@MAX_PRECISION
按照服务器中当前设置返回 decimal 和 numeric 数据类型
所用精度级别
@@NESTLEVEL
返回对本地服务器上执行当前存储过程嵌套级别(值为 0)
@@OPTIONS
返回有关当前 SET 选项信息
@@PACK_RECEIVED
返回 SQL Server 自上次启动后从网络读取输入数据包数
@@PACK_SENT
返回 SQL Server 自上次启动后写入网络输出数据包个数
@@PACKET_ERRORS
返回自上次启动 SQL Server 后在 SQL Server 连接上发生网络
数据包数
@@PROCID
返回 Transact-SQL 当前模块对象标识符 (ID)Transact-SQL
模块可以是存储过程、用户定义或触发器
@@REMSERVER
返回远程 SQL Server 数据库服务器在登录记录中显示名称
@@ROWCOUNT
返回受上语句影响行数
@@SERVERNAME
返回运行 SQL Server 本地服务器名称
@@SERVICENAME
返回 SQL Server 正在其下运行注册表项名称若当前例子为
默认例子则 @@SERVICENAME 返回 MSSQLSERVER
@@SPID
返回当前用户进程会话 ID
@@TEXTSIZE
返回 SET 语句中 TEXTSIZE 选项当前值
@@TIMETICKS
返回每个时钟周期微秒数
@@TOTAL_ERRORS
返回 SQL Server 自上次启动的后所遇到磁盘写入数
@@TOTAL_READ
返回 SQL Server 自上次启动后读取磁盘(不是读取高速缓存Cache)次数
@@TOTAL_WRITE
返回 SQL Server 自上次启动以来所执行磁盘写入次数
@@TRANCOUNT
返回当前连接活动事务数
@@VERSION
返回当前 SQL Server 安装版本、处理器体系结构、生成日期
和操作系统
以上全局变量有很多都是得到计算机相关版本对CPU及相关属性获取也有些我们在编写Transact-SQL经常使用到全局变量下面对几个全局变量做下解释:
@@DATEFIRST:看下面举例运行结果:
SET DATEFIRST 5
SELECT @@DATEFIRST AS ' firstDay ', DATEPART(dw, GETDATE) AS 'Today'
上面意思为设每天星期 5为第天那么今天是星期日执行结果如下:
firstDay Today
------- -----------
5 3
@@ERROR:在使用频度特别高特别在些存储过程使用中如我们在每更新个操作都想对其异常进行判断和检测这时候我产会根据@@ERROR值进行判断如:
IF @@ERROR <> 0
BEGIN
--在此抛出异常
--退出存储过程
END
@@IDENTITY:在条 INSERT、SELECT INTO 或大容量复制语句完成后@@IDENTITY 中包含语句生成最后个标识值如果语句未影响任何包含标识列表则 @@IDENTITY 返回 NULL如果插入了多个行生成了多个标识值则 @@IDENTITY 将返回最后生成标识值如果语句触发了个或多个触发器该触发器又执行了生成标识值插入操作那么在语句执行后立即 @@IDENTITY 将返回触发器生成最后个标识值如果对包含标识列表执行插入操作后触发了触发器并且触发器对另个没有标识列表执行了插入操作则 @@IDENTITY 将返回第次插入标识值出现 INSERT 或 SELECT INTO 语句失败或大容量复制失败或者事务被回滚情况时@@IDENTITY 值不会恢复为以前设置
@@ROWCOUNT:返回上语句影响行数我们常见就是在更新/删除/插入或查找数据语句后会用这个语句进行判断这个变量保存了上步操作所影响行数如: --数据库操作影响行数
IF @@ ROWCOUNT >0
BEGIN
--插入成功
END
最新评论