SQL Server编程(01)流程控制

批处理

应用程序向SqlServer发送的一组命令,Sql Server会将其编译成一个可执行单元,称为执行计划,执行计划中的语句每次执行一条。

每个不同的批处理用GO命令分割。GO命令不是SQL语句,它是告诉SSMS将GO之前的语句作为批处理一起发送给数据库引擎。

注意:GO命令不能和其它SQL命令写在同一行上!局部变量的作用域限定在一个批处理中,不可以在GO后面引用,否则报错!

另外,一次提交多个批处理时,一个批处理出错,只影响其本身继续执行,而不会影响下一个批处理的执行。

 

语句块

T-SQL中使用BEGIN……END来指定语句块。

注意:语句块中声明的变量,其作用域是在整个批处理中,也就是说,在BEGIN……END中定义的变量,可以在END之外进行访问,直到遇见GO。

BEGIN
    declare @str nvarchar(50)
    set @str='abc'
    print(@str)
END
print(@str)        --此处可以正常访问
go
print(@str)        --此处报错:必须声明标量变量 "@str"。

 

条件语句

IF…ELSE…语句

以下代码纯属演示:

declare @num int
set @num=3

if(@num=1)
    begin
        --这里可以写多行代码
        --如果是一行,可以省略begin...end
        print 'num=1'
    end
else if(@num=2)
    --此处只有一行代码,省略begin...end
    print 'num=2'
else
    print 'num不等于1,也不等于2'

 

case…when…then…end语句

貌似只能用在select语句中?两种用法:

第一种:

declare @num int
set @num=3
select 
    case @num
        when 1 then 'num=1'
        when 2 then 'num=2'
        else 'num不等于1,也不等于2'
    end as col

第二种:

declare @num int
set @num=3
select 
    case    --case后面不写表达式,判断表达式写在when后面
        when @num=1 then 'num=1'
        when @num=2 then 'num=2'
        else 'num不等于1,也不等于2'
    end as col

 

貌似只能用在select语句中?我试着把case…when…then…end脱离select使用,但没有成功……

 

循环语句

while循环

直接来一个简单的例子吧:

declare @num int
set @num=3
while(@num>0)    --括号貌似也不是必需的
    begin
        print @num
        set @num=@num-1
    end
go

 

使用goto语句实现循环

goto语句其实是用来跳转的,据说乱用goto会把代码变得比意大利面更乱,因此许多编程语言中的goto基本都不怎么用。

在T-SQL中,我们可以使用goto来实现循环的处理,代码如下:

declare @num int
set @num=3
lb:    --标记,名字可以自己起
print @num
if(@num>1)
begin
    set @num-=1;
    goto lb
end

 

转载于:https://www.cnblogs.com/youring2/p/4916396.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值