- 1、本文档共71页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
批处理和事务 变量的定义和使用 流程控制语句 函数 触发器 存储过程 游标 临时表 8.1 批处理和事务 批处理:批处理是把一组SQL语句,作为一个整体提交该数据库服务器执行 执行批处理:在查询分析器中输入组成批处理的SQL语句,然后执行。 语法错误:批处理语句中只要其中有一句有语法错误,则所有语句都不执行。 逻辑错误:若一个批处理中的某个语句有逻辑错误(如数据溢出完整性错误),该语句将不能正常运行,但不会影响其他语句执行。这样可能会造成数据完整性上的逻辑错误。 使用事务可以保证一组SQL语句的执行,要么全部成功,若有一句语句不成功,则全部语句均不执行。 事务的开始使用BEGIN TRANSACTION 事务的结束可以是: COMMIT:提交,即所有语句均执行 ROLLBAK:回滚,即取消所有语句 例:用一个事务完成下列工作 students中address全部为ShangHai 删除‘000005’号学生(先添加) 分别用COMMIT和ROLLBACK结束该事务。 操作步骤是: 在查询分析器中运行: 1.START TRANSACTION UPDATE students SET address=‘ShangHai’ DELETE FROM students WHERE id=‘000005’ 2.SELECT * FROM students --观察执行结果 3.ROLLBACK --回滚上列修改 4.SELECT * FROM students -- 观察执行结果 重复以上步骤,ROLLBACK换成COMMIT。 8.2 变量的定义和使用 局部变量生存期为定义它的批处理或存储过程 局部变量的定义: DECLARE @变量名 数据类型[,...n] 例:DECLARE @num INTEGER 局部变量赋值:SET @变量名=表达式或SELECT @变量名=〈表达式〉[FROM 表名[,...n] WHERE 子句] 显示局部变量:PRINT @局部变量 例:在查询分析器中输入下列内容,运行后看结果。 1.DECLARE @vname varchar(10) SET @vname=‘WangWeiHua’ PRINT @vname 或SELECT @vname 2.SET语句可以为: SELECT @vname=name FROM students WHERE id=‘000001’ 若SELECT返回多行,则最后一行的name赋给变量vname 全局变量 SQL Server提供了30多个全局变量,可在任何批处理程序或存储过程中引用。 全局变量的引用方法为:@@变量名。 例:可用下列语句获得SQL Server的版本等信息 SELECT @@VERSION PRINT @@VERSION 8.3 流程控制语句(1) IF语句 IF 条件表达式 BEGIN 语句[...n] END [ELSE] BEGIN 语句[...n] END //如果IF和ELSE后只有一个语句,可以省略BEGIN和END DECLARE @a INTEGER DECLARE @b INTEGER SELECT @a=AVG(grade) FROM students a,grade b WHERE a.id=b.id and a.sex=0 SELECT @a=AVG(grade) FROM students a,grade b WHERE a.id=b.id and a.sex=1 if @a@b PRINT ‘女同学平均成绩高于男同学’ else PRINT ‘男同学平均成绩高于男同学’ (2) 循环语句 WHILE 条件表达式 BEGIN 语句[...n] [BREAK] [CONTINUE] END BREAK语句使循环结束 CONTINUE语句进入下一循环 例:每个学生成绩加10%,但不能超过99(若超过99则加到99),然后判别平均分数是否达到85,若没有达到,则继续加分。 WHILE (SELECT AVG(grade) FROM grade)85 BEGIN UPDATE grade SET grade=99 WHERE grade *1.199 UPDATE grade SET grade=grade*1.1 WHERE grade *1.1=99 END 注意两个Update语句
文档评论(0)