--流程控制 --begin end --语句块,将多个t-sql 语句组合成一个逻辑块,当流程控制语句必须执行一个包含两条或两条以上的t-sql语句时,使用begin end、 begin declare @a int; declare @b int; declare @c int; select @a=1,@b=2,@c=3; if @a>=1 begin --执行多条SQL操作时,使用begin end 语句块,否则会报错 print(@a); print(@b); end; else print(@c); end; -- if 结构语法如下: -- if《条件表达式》 -- {命令行|程序块} begin declare @num int; set @num = 10; if @num%2 =0 print('是偶数!'); end; --case 语句进行多重选择 比if then 结构有更多的选择和判断机会避免多重 if then嵌套循环 --case 语法 -- case input_expression --when when_expression then result_expression --[...n] --[ --else else_result_expression --end select id,name,age, 性别 =case when gender='man' then '男人' when gender='woman' then '女人' else '人妖' end from stduser; --while 子句 是t-sql 语句支持的循环结构,在条件为真的情况下,while 字句可以循环的执行其最后的一条t-sql命令, --如果想循环执行一组命令则需要和begin end 配合使用。 -- while <条件表达式> -- begin -- <命令行|程序块> -- end declare @n int,@sum int; set @n=1; set @sum=0; while @n<=10 begin set @sum += @n; set @n += 1; print(@sum); print(@n); end; --while ... continue ...break -- 循环while 字句还可以用continue 和break 命令控制while循环中语句的执行。 --while <条件> -- begin -- if <条件> -- continue 跳过操作 -- if <条件> -- break 终止循环操作 -- end begin declare @n1 int; set @n1 = 1; while @n1 < 10 begin if @n1=5 -- 当 @n1 的值为 5时 就跳过 ,后面的代码就不去执行了,-- 注意 ,如果在if 里面会执行多条sql 那么请一定使用begin end 语句块来包裹 begin set @n1 = 6; continue end; if @n1=8 -- 当@n1 的值为 8 时 就结束循环 break print(@n1); set @n1 += 1; end; end; --return 语句用于从查询或过程中无条件退出,return 语句可在任何时候用于从过程,批处理,或语句块中退出,位于return之后的语句不会被执行。 -- return 整数值 -- return命令返回的内定值。 -- -1 找不到对象, -7 资源错误,如磁盘空间不足 -- -2 数据类型错误 -8 非致命的部内部错误 -- -3 死锁 -9 以达到系统的极限 -- -4 违反权限原则 -10或-11 致命的内部不一致性错误 -- -5 语法错误 -12 表或者指针破坏 -- -6 用户造成的一般错误 -13数据库破坏 -- F 程序执行成功 begin declare @n2 int; set @n2 = 1; while @n2 < 10 begin if @n2 = 3 return print(@n2); set @n2 += 1; end; end; -- waitfor 指定触发器,存储过程,或者事务执行的时间,时间间隔,或者事件,还可以用来暂时停止程序的执行,直到所设定的等待时间已经过才继续往下执行。 -- 语法 waitfor delay<'时间'>| time<'时间'> -- 时间必须为 datetime 类型的数据,如: 11:15:27,单不能包含日期 -- delay 用来设定等待时间,最多为24小时 -- time 用来设定等待结束的时间点 -- 例如,等待3秒后显示祝你升入快乐 waitfor delay '0:00:03' print('生日快乐!');