选择显示字体大小

sql 流程控制命令


transact-sql 语言使用的流程控制命令与常见的程序设计语言类似主要有以下几种控制命令。

4.6.1 if…else
其语法如下:
if <条件表达式>
<命令行或程序块>
[else [条件表达式]
<命令行或程序块>]
其中<条件表达式>可以是各种表达式的组合,但表达式的值必须是逻辑值“真”或“假”。else子句是可选的,最简单的if语句没有else子句部分。if…else用来判断当某一条件成立时执行某段程序,条件不成立时执行另一段程序。如果不使用程序块,if或else只能执行一条命令。if…else可以进行嵌套。

例4-9
declare@x int,@y int,@z int
select @x=1,@y=2, @z=3
if@x>@y
print'x>y' --打印字符串'x>y'
else if@y>@z
print'y>z'
else print'z>y'
运行结果如下
z>y
注意:在transact-sql中最多可嵌套32级。

4.6.2 begin…end
其语法如下:
begin
<命令行或程序块>
end
begin…end用来设定一个程序块,将在begin…end内的所有程序视为一个单元执行begin…end经常在条件语句,如if…else中使用。在begin…end中可嵌套另外的begin…end来定义另一程序块。

4.6.3 case
case 命令有两种语句格式:
case <运算式>
when <运算式>then<运算式>

when<运算式>then<运算式>
[else<运算式>]
end

case
when <条件表达式> then <运算式>
when <条件表达式> then <运算式>
[else <运算式>]
end
case命令可以嵌套到sql命令中。
例4-10:调整员工工资,工作级别为“1”的上调8%,工作级别为“2”的上调7%,工作级别为“3”的上调6%,其它上调5%。
use pangu
update employee
set e_wage =
case
when job_level = ’1’ then e_wage*1.08
when job_level = ’2’ then e_wage*1.07
when job_level = ’3’ then e_wage*1.06
else e_wage*1.05
end
注意:执行case子句时,只运行第一个匹配的子名。

4.6.4 while…continue…break
其语法如下:
while <条件表达式>
begin
<命令行或程序块>
[break]
[continue]
[命令行或程序块]
end
while 命令在设定的条件成立时会重复执行命令行或程序块。continue命令可以让程序跳过continue 命令之后的语句,回到while 循环的第一行命令。break 命令则让程序完全跳出循环,结束while 命令的执行。while 语句也可以嵌套。

例4-11:
declare @x int @y int @c int
例4-11:
declare @x int, @y int, @c int
select @x = 1, @y=1
while @x < 3
begin
print @x --打印变量x 的值
while @y < 3
begin
select @c = 100*@ x+ @y
print @c --打印变量c 的值
select @y = @y + 1
end
select @x = @x + 1
select @y = 1
end
运行结果如下
1
101
102
2
201
202

4.6.5 waitfor
其语法如下:
waitfor {delay <‘时间’> time <‘时间’>
errorexit processexit mirrorexit}
waitfor 命令用来暂时停止程序执行,直到所设定的等待时间已过或所设定的时间已到才继续往下执行。其中‘时间’必须为datetime 类型的数据,如:‘11:15:27’,
但不能包括日期各关键字含义如下:

例4-12 等待1 小时2 分零3 秒后才执行select 语句
waitfor delay ’01:02:03’
select * from employee

例4-13:等到晚上11 点零8 分后才执行select 语句
waitfor time ’23:08:00’
select * from employee

4.6.6 goto
语法如下:
goto 标识符
goto 命令用来改变程序执行的流程,使程序跳到标有标识符的指定的程序行再继续往下执行。作为跳转目标的标识符可为数字与字符的组合,但必须以“:”结尾,如‘12:’或‘a_1:’。在goto 命令行,标识符后不必跟“:”。
例4-14 分行打印字符‘1’、‘2’、‘3’、‘4’、‘5’
declare @x int
select @x = 1
label_1
print @x
select @x = @x + 1
while @x < 6
goto label_1

4.6.7 return
语法如下
return [整数值]
return 命令用于结束当前程序的执行,返回到上一个调用它的程序或其它程序。在括号内可指定一个返回值。
例4-15
declare @x int @y int
select @x = 1 @y = 2
if x>y
return 1
else
return 2
如果没有指定返回值,sql server 系统会根据程序执行的结果返回一个内定值,如
表4-5 所示。


如果运行过程产生了多个错误,sql server系统将返回绝对值最大的数值;如果此时用户此时定义了返回值,则以返回用户定义的值。return语句不能返回null值。

  


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons