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 语句一样随着执行窗口的关闭而消失,不会在数据库产生遗留,所以不必删除。