SQL Server 全局变量

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

--[email protected]@error 最后一个T-SQL错误的错误号(目的是或得违反约束的错误号)
insert into Subject values(‘测试工程师‘)--违反了约束
select @@ERROR 

--[email protected]@identity 最后一次插入的标示值
insert into Subject (SubjectName, ClassHour, GradeId) --SubjectId为主键,自增
values (‘好吧‘,‘120‘,1)
select @@identity  --如果上面是第一次添加,则返回1
--注意:如果你用了delete语句删除了上面添加的语句后
--再select @@identity ,则返回的还是1

--[email protected]@language 当前使用的语言
select @@language 

--[email protected]@rowcount 受上一个SQL语句影响的行数
select * from Subject --如果查到了N条数据
select @@rowcount --则返回的值N

--[email protected]@SERVERNAME本地服务器的名称
select @@SERVERNAME  --返回的值 123-PC

--[email protected]@SERVICENAME 该计算机上的SQL服务的名称
select @@SERVICENAME --返回的值 MSSQLSERVER

--[email protected]@TIMETICKS 当前计算机上每刻度的微秒数 每一刻度的时间量依赖于计算机。操作系统的一刻度是 31.25 毫秒,或是三十分之一秒。
select @@TIMETICKS --返回的值 31250

--[email protected]@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

--[email protected]@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

其中 8.TRANSOUNT 详情https://msdn.microsoft.com/zh-cn/library/ms187967.aspx

10.MAX_CONNECTIONS详情http://blog.hehehehehe.cn/a/668.htm

时间: 2024-11-01 13:35:26

SQL Server 全局变量的相关文章

sql server全局变量

sql server全局变量 在SQL Server中,全局变量是一种特殊类型的变量,服务器将维护这些变量的值.全局变量以@@前缀开头,不必进行声明,它们属于系统定义的函数,自己没有办法定义全局变量,如果有需要,可以用变通的方法,如把你的表看做全局变量. SQL Server 7.0 以前的版本全局变量是由系统提供且预先声明的变量,通过在名称前保留两个 (@@) 符号区别于局部变量.SQL Server 7.0及其以后版本 Transact-SQL 全局变量为函数形式,现在作为函数引用. 下面就

转载 SQL Server中常用全局变量介绍

变量 Transact-SQL语言中有两种形式的变量,一种是用户自己定义的局部变量,另外一种是系统提供的全局变量.局部变量 局部变量是一个能够拥有特定数据类型的对象,它的作用范围仅限制在程序内部.局部变量可以作为计数器来计算循环执行的次数,或是控制循环执行的次 数.另外,利用局部变量还可以保存数据值,以供控制流语句测试以及保存由存储过程返回的数据值等.局部变量被引用时要在其名称前加上标志"@",而且必须 先用DECLARE命令定义后才可以使用. 全局变量全局变量是SQL Server系

SQL Server 系统全局变量

首先给出个例子:添加一条数据库中不存在的数据,然后返回新增的那条数据的主键id /// <summary> /// 判断是否存在添加的流程名 /// 没有则,添加个人配置的流程名 /// </summary> /// <param name="uid">用户id</param> /// <param name="processName">流程名</param> public int AddPri

【Kettle】4、SQL SERVER到SQL SERVER数据转换抽取实例

1.系统版本信息 System:Windows旗舰版 Service Pack1 Kettle版本:6.1.0.1-196 JDK版本:1.8.0_72 2.连接数据库 本次实例连接数据库时使用全局变量. 2.1 创建新转换:spoon启动后,点击Ctrl+N创建新转换 2.2 在新转换界面中,右键点击DB连接,系统会弹出[数据库连接]界面. windows系统环境下,可用${}获取变量的内容. 说明: 连接名称:配置数据源使用名称.(必填) 主机名称:数据库主机IP地址,此处演示使用本地IP(

SQL Server 2012 案例教程(贾祥素)——学习笔记

第2章 SQL Server 2012概述 1.SQL(Structed Query Language),结构化查询语言. 2.SSMS(SQL Server Mangement Studio),SQL Server 2012的操作环境. 3.连接SQL Server之前应先启动SQL Server服务,即SQL Server(MSSQLSERVER): 方法1 开始--所有程序--Microsoft SQL Server 2012--配置工具--SQL Server配置管理器. 方法2 控制面

从算法入手讲解如何在SQL Server中实现最优最简

算法是计算机科学中一个重要的研究方向,是解决复杂问题的关键.在计算机世界中,算法无处不在.数据库是存储数据和执行大批量计算的场所,在数据库中使用一些简单的SQL命令,进行存储.查询.统计.以解决现实世界中的问题已经是屡见不鲜.随着数据量的大幅度增加和业务规则的日益复杂,越来越需要一种专门的方法来满足效率和准确性方面的要求.如何把解决问题的复杂算法转换为数据库能够执行的命令,也是数据库应用技术研究的一个方面.本文以MSSQL中的命令来阐述例子. 数据库中可以存储实体的数据集合,在进行运算时,数据库

SQL Server存储过程的初步认知

什么是存储过程? 存储过程就是作为可执行对象存放在数据库中的一个或多个SQL命令.实际上存储过程就是能完成一定操作的一组SQL语句. 为什么要用存储过程? 1.  存储过程只在创造时候编译,以后每次执行存储过程都不需要再重新的编译,而一般的SQL语句每执行一次就需要编译一次,所以使用存储过程可提高数据库执行速度. 2.  当对数据库进行复杂操作时,可将此复杂操作用存储过程封装起来与数据库提供的事物处理结合在一起. 3.  存储过程可以重复的使用,降低开发人员的工作量,提高工作效率. 4.  安全

关于SQL SERVER数据库学习总结

对于SQL SERFVER数据库也学了有一阵子了,自己也对自己所学做了一些总结. 我们首先学习数据库设计的一些知识点和用SQL语句建库. 设计数据库步骤:需求分析阶段,概要设计阶段,详细设计阶段, 建数据库的SQL语句如下(包含了如果有该数据库先删除在建立数据库) use masterGOif exists(select * from sysdatabases where name='Wages')DROP database WagesCREATE DATABASE Wages ON (  NA

SQL Server 存储过程之基础知识(转)

什么是存储过程呢?存储过程就是作为可执行对象存放在数据库中的一个或多个SQL命令. 通俗来讲:存储过程其实就是能完成一定操作的一组SQL语句. 那为什么要用存储过程呢?1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度.2.当对数据库进行复杂操作时,可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用.3.存储过程可以重复使用,可减少数据库开发人员的工作量.4.安全性高,可设定只有某些用户