sqlserver 进阶(一)块的使用
块相当于 Java 中的代码块,是 PL/SQL 中的基本单位,不能被其它模块调用,只能一次执行,执行时进行编译,在修数时,只用执行一次的逻辑,可以使用块来实现,不会对系统产生后续不良影响。
1、语法结构
DECLARE <声明语句 >
DECLARE <声明语句 >
BEGIN
<执行语句>
[EXCEPTION]
<异常处理语句 >
END ;
说明:
①声明部分(Declaration section) 声明部分包含了变量和常量的数据类型和初始值。这个部分是由关键字 DECLARE 开始,如果不需要声明变量或常量,那么可以忽略这一部分。
②执行部分(Executable section) 执行部分是 PL/SQL 块中的指令部分,由关键字 BEGIN 开始,所有的可执行语句都放在这一部分,其他的 PL/SQL 块也可以放在这一部分。
③异常处理部分(Exception section) 这一部分是可选的,在这一部分中处理异常或错误。
2、示例
例 1:
--声明
declare @v_sname varchar(20)
declare @v_age int
--执行
begin
--赋值符号为set
set @v_sname='tansun'
set @v_age=10
--输出语句print
print @v_sname
print @v_age
--异常处理(有异常时,进行异常处理,没有时可以省掉)
--exception
--结束
end;
例 2:
declare @dname varchar(14)
BEGIN
select @dname=dname from dept where deptno=1
print @dname
end;
例 3:
--while循环计算1到100的和
declare @a int
declare @sum int
set @a=1
set @sum=0
begin
while @a<=100
begin
set @sum+=@a
set @a+=1
end
print @sum
end;
例 4:
--if,else条件分支
if(1+1=2)
begin
print '对'
end
else
begin
print '错'
end
例 5:
--when then条件分支
declare @today int
declare @week nvarchar(3)
begin
set @today=3
set @week=case
when @today=1 then '星期一'
when @today=2 then '星期二'
when @today=3 then '星期三'
when @today=4 then '星期四'
when @today=5 then '星期五'
when @today=6 then '星期六'
when @today=7 then '星期日'
else '值错误'
end
print @week
end;
3、执行
块可以看做是特殊的 sql 语句组合体,不会在数据库中存在,按照普通 sql 语句的执行方式即可执行。
4、删除
块和普通的 sql 语句一样随着执行窗口的关闭而消失,不会在数据库产生遗留,所以不必删除。