变量和数据库事务

2014-11-24 13:24:11 · 作者: · 浏览: 0
变量和 数据库事务
声明局部变量
   DECLARE @变量名 数据类型
   DECLARE@name varchar(20)
   DECLARE @id int
赋值 
SET@变量名=值      --set用于普通的赋值
SELECT@变量名= 值 --用于从表中查询数据并赋值,,可以一次给多个变量赋值
例如:
SET@name=‘张三’
SET @id= 1
SELECT@name= sName FROMstudent WHEREsId=@id

变量
含义
@@ERROR
最后一个T-SQL错误的错误号
@@IDENTITY
最后一次插入的标识值
@@LANGUAGE
当前使用的语言的名称
@@MAX_CONNECTIONS
可以创建的同时连接的最大数目
@@ROWCOUNT
受上一个SQL语句影响的行数
@@SERVERNAME
本地服务器的名称
@@TRANSCOUNT
当前连接打开的事务数
@@VERSION
SQL Server的版本信息
指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)--也就是由多个sql语句组成,必须作为一个整体执行
这些sql语句作为一个整体一起向 系统提交,要么都执行、要么都不执行
开始事务:begin transaction
事务提交:commit transaction
事务回滚:rollback transaction
判断某条语句执行是否出错:
全局变量@@ERROR;
@@ERROR只能判断当前一条T-SQL语句执行是否有错,为了判断事务中所有T-SQL语句是否有错,我们需要对错误进行累计; 例:SET @errorSum=@errorSum+@@error
写法一:
[sql]
begin tran  
declare @error int=0  
update bank set balance=balance-1000 where cid='0001';  
set @error=@@error+@error;  
update bank set balance=balance + 1000 where cid='0002';  
set @error=@@error+@error;  
if @error<>0  
begin   
rollback  
end  
else  
begin  
commit  
end  

写法二:
[sql]
begin tran  
declare @error int=0  
begin try  
update bank set balance=balance-900 where cid='0001';  
set @error=@@error+@error;  
update bank set balance=balance + 900 where cid='0002';  
set @error=@@error+@error;  
commit  
end try  
begin catch  
rollback  
end catch  

SET IMPLICIT_TRANSACTIONS { ON | OFF }

如果设置为ON,SETIMPLICIT_TRANSACTIONS将连接设置为隐式事务模式。如果设置为OFF,则使连接恢复为自动提交事务模式。