sql server 【while】,【case】,【if..else ...】,【try catch .】对象

前面我们说了一下,存储过程和视图,

下面我们来简单的了解下数据库中 while ,case ,if ..else 这几个对象

1 while

while 是根据它接到bool值是true还是false 来执行重复操作的一个命令对象。

语法:

while 条件

begin

.....

end

示例

DECLARE @start INT
set @start=1
WHILE @start<=10
BEGIN
 PRINT @start
 SET @start=@start+1
END

2 case

case 根据一套逻辑返回一个特定的值,
DECLARE @value INT
SET @value=1
SELECT CASE @value
WHEN 1 THEN 'guanbi'
WHEN 2 THEN 'dakai'
END

上面这个例子返回的结果是,如下图

而下面这个case 语句返回则是,如下图

DECLARE @value INT
SET @value=1
SELECT CASE @value
WHEN 1  THEN '关闭'
WHEN 2 THEN '打开'
END

 

大家会注意看到,如果 THEN 后面加的是中文 ,则返回的结果是“?” ,也许别的版本数据库不会出现这种情况,我没有试过,本人用的是sql server 2005 ,

3 if ...else

这个相对上面那两个大家应该会陌生吧,如果条件,则执行该条件的sql 语句,反则执行下一个条件的sql 语句,下面我们还是拿一个简单例子来说明这一点。

语法

if 条件

  要执行的语句

else

     要执行的语句

示例

DECLARE @i INT
SET @i=1
WHILE (@i<=(SELECT COUNT(*) FROM chengji))
BEGIN
 SELECT xingming
    ,fenshu
    ,CASE fenshu
       WHEN 100 THEN 'youxiu'
       WHEN 60 THEN 'hege'
       WHEN 30 THEN 'buhege'
     END
 FROM chengji
 SET @i=@i+1
END

 4 try   ... catch ...

示例:

BEGIN TRY
  DECLARE @X INT
  -- Divide by zero to generate Error
  SET @X = 1/0
  PRINT 'Command after error in TRY block'
END TRY
BEGIN CATCH
  PRINT 'Error Detected'
END CATCH

 

到这里,这几个简单的数据库对象介绍完了,当然这些都是皮毛而已,虽然是这样,但这也是基础,再复杂的脚本都是多个简单脚本的组成的,被称为复合的简单性,只要我们把这些最简单一点点的积聚起来,我们也能像他们一样,写出令人另眼相看的sql 语句. 

原文地址:https://www.cnblogs.com/dekevin/p/2612490.html