一、数据库中变量的创建以及显示
declare @n int --使用declare关键字声明变量n,int为数据类型
set @n = (select top(1) LotId from Lot) --通过SET查询结果赋予变量
select top(1) @n=lotid from Lot -- 通过SELECT 查询结果赋予变量
select @n --展示出变量结果
Declare @avg float
SELECT @avg=avg(currentquantity)
from
(
select top 5 L.CurrentQuantity from Lot L
--group by L.CurrentQuantity
)
as temp
select @avg as avg
二、数据库视图的创建、删除
CREATE VIEW LOT
AS (SELECT L.LotNO,PO.ProductionOrderNO FROM Lot L
LEFT JOIN ProductionOrder PO ON PO.ProductionOrderId = L.ProductionOrderId)
--创建视图
DROP VIEW POL --删除视图
--视图可以方便的对个表中的数据进行整理显示,但不会提供数据读取速度
三、事务应用
begin try 、end try 为一组代码块,尝试去对语句进行执行,无法执行成功与否,语句还会继续往下执行,
begin catch 、end catch 为一组代码块,对上述的语句的执行结果(成功与否),进行获取。
begin tran 、commit tran 、rollback tran 为一组代码块。
begin try --尝试提交
select 2/0
end try
begin catch
select ERROR_NUMBER() as error_number,--错误的位置,无错误时返回NULL
ERROR_MESSAGE() as error_message,--错误的详细描述,无错误时返回NULL
ERROR_STATE() as error_state, --错误的状态,无错误时返回NULL
ERROR_SEVERITY() AS error_severity --错误的程度,无错误时返回NULL
end catch
T-SQL错误处理可用的严重度代码 --ERROR_SEVERITY()
严重度代码 描述
10 状态消息:没有产生任何错误,但是返回了一个消息
11-13 无特别的含义
14 信息消息
15 警告消息
16 严重错误:程序失败
begin tran --开启事务
begin try ---开启尝试代码
insert into Unit values('abc2','abc2')
insert into Unit values('abc11','abc11')
insert into Unit values('abc11','abc12')
end try --结束尝试代码
begin catch --开始获取异常
select ERROR_MESSAGE() as error_message--输出错误的详细描述
rollback tran --若有异常回滚上述提交的代码
return --结束后续执行返回
end catch --结束捕获
commit tran --若无异常时提交执行的代码
对于事务回滚的另外一种做法(XACT_ABORT)
XACT_ABORT原意是精确终止、其实在SQL运行中很好理解
默认XACT_ABORT=OFF的情况下,语句不管什么情况,遇到什么错误,反正错误了也继续执行,意思为错也不回头。
在XACT_ABORT=ON的情况下,语句遇到一个错误就停止执行并回滚错误:
关键是这个是事务联系起来,一个事务就是一个错误,所以事务内错了整个事务就回滚,就把一个事务当成一句语句好了。
四、循环操作
declare @i int , @sum int --定义两个变量
set @i = 1
set @sum = 0 --赋值
while (@i<=10) --循环的条件
begin
set @sum = @i +@sum --执行循环中的命令
set @i = @i+1
end
select @sum as sum --输出结果
五、多分支逻辑控制语句
select * ,(
case --case 表示开始情况判断
when RoleId <6 then 'A' --一种情况
when RoleId <11 then 'B' --刨除上述条件外的另外一种情况
else 'C' --其余的情况
end --结束情况
) as 角色 --给判断的情况赋予名称
from Role
版权声明:本文为jorsonzen原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。