Chinaunix首页 | 论坛 | 博客
  • 博客访问: 316342
  • 博文数量: 17
  • 博客积分: 5000
  • 博客等级: 大校
  • 技术积分: 1105
  • 用 户 组: 普通用户
  • 注册时间: 2005-10-18 20:28
文章分类

全部博文(17)

文章存档

2011年(1)

2008年(16)

我的朋友

分类: 数据库开发技术

2008-07-07 21:04:54

逻辑控制语句
同C语言一样:
ELSE是可选部分
如果有多条语句,才需要BEGIN-END语句块
SQL中的IF-ELSE语句
IF (条件)
  BEGIN
    语句1
    语句2
    ……
  END
ELSE
 BEGIN
    语句1;
    语句2;
    ……
  END
SQL中的WHILE语句
WHILE (条件)
  BEGIN
    语句1
    语句2
    ……
    BREAK
  END
同C语言一样:
BREAK表示退出循环
如果有多条语句,才需要BEGIN-END语句块
CASE-END多分支语句
CASE
  WHEN 条件1 THEN  结果1
  WHEN 条件2 THEN  结果2
  ……
  ELSE 其他结果
END

SELECT 考号=ExamNo,学号=stuNo,笔试=writtenExam,机试=labExam,
  平均分=(writtenExam+labExam)/2,
  等级=CASE 
       WHEN (writtenExam+labExam)/2<60 THEN '不及格'
       WHEN (writtenExam+labExam)/2 BETWEEN 60 AND 69 THEN '差'
       WHEN (writtenExam+labExam)/2 BETWEEN 70 AND 79 THEN '中'
       WHEN (writtenExam+labExam)/2 BETWEEN 80 AND 89 THEN '良'
       ElSE '优'
     END
  FROM stuMarks
批处理语句
批处理是包含一个或多个 SQL 语句的组,从应用程序一次性地发送到SQL Server执行
SQL Server 将批处理语句编译成一个可执行单元,此单元称为执行计划。执行计划中的语句每次执行一条
SELECT * FROM stuInfo
SELECT * FROM stuMarks
UPDATE stuMarks
   SET writtenExam=writtenExam+2
GO
GO是批处理的标志,表示SQL Server将这些T-SQL语句编译为一个执行单元,提高执行效率
一般是将一些逻辑相关的业务操作语句,放置在同一批中,这完全由业务需求和代码编写者决定
SQLServer规定:如果是建库、建表语句、以及我们后面学习的存储过程和视图等,则必须在语句末尾添加 GO 批处理标志
--例如建表语句的末尾必须添加GO
CREATE  TABLE  stuInfo  
(
....
)
GO
SELECT * FROM stuMarks  --原始成绩
DECLARE @labAvg INT --声明变量,用户临时存放平均分
WHILE(1=1)  循环加分
 BEGIN
    UPDATE stuMarks  根据机试成绩酌情加分,整个是一个UPDATE语句
      SET labExam=
        CASE
            WHEN labExam<60 THEN labExam+5
            WHEN labExam between 60 AND 69 THEN labExam+3
            WHEN labExam between 70 AND 79 THEN labExam+2
            WHEN labExam between 80 AND 89 THEN labExam+1
            ELSE labExam
        END
     SELECT @labAvg=AVG(labExam) FROM stuMarks
     IF  @labAvg>=85  获取目前的平均分,判断是否还继续加分
           BREAK
 END
SELECT * FROM stuMarks  --加分后的成绩
 

 
 
 
阅读(2784) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-05-05 11:19:02

可能要更详细一些