变量和数据库事务

来源:互联网 发布:centos7和ubuntu 编辑:程序博客网 时间:2024/06/15 10:38

 

声明局部变量

   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
写法一:
begin trandeclare @error int=0update 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<>0begin rollbackendelsebegincommitend

写法二:
begin trandeclare @error int=0begin tryupdate 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;commitend trybegin catchrollbackend catch

SET IMPLICIT_TRANSACTIONS { ON | OFF }

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


原创粉丝点击