SQL Server 全局变量

 

转藏到我的图书馆

 

SQL Server 全局变量

SQL Server中所有全局变量都使用两个@符号作为前缀

复制代码

–1.@@error 最后一个T-SQL错误的错误号(目的是或得违反约束的错误号)

insert into Subject values(‘测试工程师‘)–违反了约束

select @@ERROR 

–2.@@identity 最后一次插入的标示值

insert into Subject (SubjectName, ClassHour, GradeId) –SubjectId为主键,自增

values (‘好吧‘,‘120‘,1)

select @@identity  –如果上面是第一次添加,则返回1

–注意:如果你用了delete语句删除了上面添加的语句后

–再select @@identity ,则返回的还是1

–3.@@language 当前使用的语言

select @@language 

–4.@@rowcount 受上一个SQL语句影响的行数

select * from Subject –如果查到了N条数据

select @@rowcount –则返回的值N

–5.@@SERVERNAME本地服务器的名称

select @@SERVERNAME  –返回的值 123-PC

–6.@@SERVICENAME 该计算机上的SQL服务的名称

select @@SERVICENAME –返回的值 MSSQLSERVER

–7.@@TIMETICKS 当前计算机上每刻度的微秒数 每一刻度的时间量依赖于计算机。操作系统的一刻度是 31.25 毫秒,或是三十分之一秒。

select @@TIMETICKS –返回的值 31250

–8.@@TRANCOUNT

–BEGIN TRANSACTION 语句将 @@TRANCOUNT 增加 1。 ROLLBACK TRANSACTION 将 @@TRANCOUNT 递减到 0,但 ROLLBACK TRANSACTION savepoint_name 除外,它不影响 @@TRANCOUNT。 COMMIT TRANSACTION 或 COMMIT WORK 将 @@TRANCOUNT 递减 1。 

–在处理事务的时候,一般都用RollBack Transaction来回滚,但是如果在嵌套事务中这样使用的话,就会出现错误。

–在SqlServer里,嵌套事务的层次是由@@TranCount全局变量反映出来的。每一次Begin Transaction都会引起@@TranCount加1。而每一次Commit Transaction都会使@@TranCount减1,而RollBack Transaction会回滚所有的嵌套事务包括已经提交的事务和未提交的事务,而使@@TranCount置0。例如:

–Begin Transaction — @@TranCount = 1

–BeginTransaction — @@TranCount = 2 

–BeginTransaction — @@TranCount = 3

–Commit Transaction — @@TranCount = 2

–Commit Transaction — @@TranCount = 1

–Commit Transaction — @@TranCount = 0

–如果出现错误ROLLBACK TRANSACTION 

–则:

–Begin Transaction — @@TranCount = 1

–BeginTransaction — @@TranCount = 2 

–BeginTransaction — @@TranCount = 3

–ROLLBACK TRANSACTION — @@TranCount = 0

–Commit Transaction — @@TranCount = 0—出现错误

–Transaction count after EXECUTE indicates that a COMMIT or ROLLBACK TRANSACTION statement is missing. Previous count = 1, current count = 0.

–如果被嵌套的事务中发生错误,最简单的方法应该是无论如何都先将它提交,同时返回错误码(一个正常情况不可能出现的代码 如 -1)让上一层事务来处理这个错误,从而使@@TranCount 减1。 这样外层事务在回滚或者提交的时候能够保证外层事务在开始的时候和结束的时候保持一致。由于里层事务返回了错误码,因此外层事务(最外层)可以回滚事务,这样里面已经提交的事务也可以被回滚而不会出现错误。

select @@TRANCOUNT

–9.@@VERSION     SQL Server的版本信息

select @@VERSION –返回的值 Microsoft SQL Server 2008 R2 (RTM) – 10.50.1600.1 (Intel X86)   Apr  2 2010 15:53:02   Copyright (c) Microsoft Corporation  Enterprise Edition on Windows NT 6.1 <X86> (Build 7601: Service Pack 1) 

–10.可以创建的,同时连接的最大数目

select @@MAX_CONNECTIONS  –返回的值 32767