变量和
数据库事务
声明局部变量 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,则使连接恢复为自动提交事务模式。