sqlsever2019:控制流全解

x33g5p2x  于2021-12-26 转载在 其他  
字(1.8k)|赞(0)|评价(0)|浏览(211)

一、begin…end语句

BEGIN … END 用来设定一个程序块,将在 BEGIN … END 内的所有程序视为一个单行。 BEGIN … END 经常在条件语句句 IF … ELSE 中使用。在 BEGIN… END 可嵌套另外BEGIN… END 来定义另一程序块,语法如下:

begin
{
sql语句
}
end

二、if …else 语句

这个很简单,直接举个例子说明。
比如段比较变量 的大小,并将结果打印出来:

declare @a int ,@b int,@c int
select @a=10,@b=12,@c=15
if @a>@b
print 'a大于b'
else if @b>@c
print 'b大于c'
else 
print 'c大于b'

演示:

或者使用set语句,这样只能单个赋值:

declare @a int ,@b int,@c int
--select @a=10,@b=12,@c=15
set @a=10
set @b=12
set @c=15
if @a>@b
print 'a大于b'
else if @b>@c
print 'b大于c'
else 
print 'c大于b'

演示:

三、case语句

学过c语言的应该很了解case语句了,所以我就不讲太多了,举个例子说明即可。
假设我们有数据表如下:

SQL遍历条件并在满足第一个条件时返回值:

SELECT OrderID, Quantity,
CASE
    WHEN Quantity > 30 THEN "The quantity is greater than 30"
    WHEN Quantity = 30 THEN "The quantity is 30"
    ELSE "The quantity is under 30"
END AS QuantityText
FROM OrderDetails;

四、while语句

4.1 有限循环

while语句就是只要条件为真就会一直执行。语法如下:

WHILE condition
BEGIN
   {...statements...}
END

比如我要做一个打印一到十的循环:

declare @counter int
set @counter=1
while ( @counter <= 10)
begin
    PRINT 'counter = ' +convert(varchar,@counter) --注意字符和数字拼接需要将数字转为字符
    set @counter  = @counter  + 1
end

演示:

4.2 无限循环

如果是这样,则会无限循环,因为没有停止跳出循环:

DECLARE @Counter INT 
SET @Counter=1
WHILE ( @Counter <= 10)
BEGIN
    PRINT '无限循环中...!'
  
END

五、break语句

break可以帮助我们强制停止循环,句子如下:

declare @Counter int
set @Counter=1
while ( @Counter <= 10)
begin
  print ' counter= ' + CONVERT(VARCHAR,@Counter)
  if @Counter >=7
  begin
  break
  end
    set @Counter  = @Counter  + 1
end

演示:

在这个例子中,我们检查了变量的值,当值等于或大于 7 时,代码进入 IF…ELSE 块并执行 BREAK 语句,因此它立即退出循环。为此,该消息显示变量的值最多为 7。如果 IF…ELSE 语句的条件不满足,则循环将运行,直到条件结果为假。

六、return 语句

return 命令用于结束当前程序的执行,返回到 一个调用它的程序或其他程序。在括号内可指定一个返回值。语法如下:

return [值]

七、goto语句

Goto语句可以让程序跳转到一个指定的标签处并执行其后的代码。作为跳转目标的标识符可为数字与字符的组合 但必须以 ": "结尾,如 '2: '或‘3b1: ’

比如打印一到五:

declare @x int
select @x = 1
label:
print @x
select @x = @x + 1
while @x < 6
goto label

演示:

八、waitfor语句

这个语句就是用于时间等待,间隔等。例子如下:

1-等五秒钟显示“川川你好”:

waitfor delay'00:00:5'
print '川川你好'

演示:

2-在2:59显示“该睡觉了!”

waitfor time'2:59:00'
print '该睡觉了!'

演示:

相关文章