sql server 【while】,【case】,【if..else ...】,【try catch .】对象
2012-07-27 21:31
357 查看
前面我们说了一下,存储过程和视图,
下面我们来简单的了解下数据库中 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
上面这个例子返回的结果是,如下图
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/10/5d4d412b1c6e1b85eceb23f6f8cd1f18.jpg)
而下面这个case 语句返回则是,如下图
DECLARE @value INT
SET @value=1
SELECT CASE @value
WHEN 1 THEN '关闭'
WHEN 2 THEN '打开'
END
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/10/899ef7cff24f556cc9d622948f6dc932.jpg)
大家会注意看到,如果 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 语句.
下面我们来简单的了解下数据库中 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
上面这个例子返回的结果是,如下图
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/10/5d4d412b1c6e1b85eceb23f6f8cd1f18.jpg)
而下面这个case 语句返回则是,如下图
DECLARE @value INT
SET @value=1
SELECT CASE @value
WHEN 1 THEN '关闭'
WHEN 2 THEN '打开'
END
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/10/899ef7cff24f556cc9d622948f6dc932.jpg)
大家会注意看到,如果 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 语句.
相关文章推荐
- sql server while, case,if..else ... try catch ..对象
- Javascript:基本语句(if-else/switch/for/while/for-in/try-catch)
- 【算法题】题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)
- 求 1+2+3+..n不能使用乘除法、 for 、 while 、 if 、 else 、 switch 、 case 等关键字以及条件判断语句
- c# 扩展方法奇思妙用变态篇二:封装 if/else、swith/case 及 while
- 求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)
- 题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。
- 求1+2+3+...+n,要求不能使用乘,除,for ,while,if ,else ,switch,case
- 1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)
- Interview----求 1+2+...+n, 不能用乘除法、for、while if、else、switch、case 等关键字以及条件判断语句 (A?B:C)
- 实现1+2+3...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)
- 【编程题目】求1+2+…+n, 要求不能使用乘除法、for、while、if、else、switch、case和条件语句
- 求1+2+…+n, 要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。
- 求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句
- 每天学习一算法系列(12) (求1+2+…+n,不能使用乘除法,for、while、if 、else、switch、case 等关键字以及条件判断语句)
- Interview----求 1+2+...+n, 不能用乘除法、for、while if、else、switch、case 等关键字以及条件判断语句 (A?B:C)
- 实现1+2+3+...+n。要求不能使用乘除法,for,while,if,else,switch,case,等关键字及条件判断语句。
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)
- 求1+2+3+...+n,要求不能使用乘除法,for,while,if,else,switch,case等关键字以及条件判断语句
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。