声明局部变量
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的版本信息 |
这些
sql
语句作为一个整体一起向系统提交,要么都执行、要么都不执行
写法二:
开始事务:
begin transaction
事务提交:
commit transaction
事务回滚:rollback transaction
判断某条语句执行是否出错:
全局变量
@@ERROR
;
@@ERROR
只能判断当前一条
T-SQL
语句执行是否有错,为了判断事务中所有
T-SQL
语句是否有错,我们需要对错误进行累计;
例:
SET @
errorSum
=@
errorSum
+@@error
写法一:
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
写法二:
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,则使连接恢复为自动提交事务模式。