第九章 Transact-SQL编程.docVIP

  • 0
  • 0
  • 约1.36万字
  • 约 33页
  • 2018-01-13 发布于河南
  • 举报
第九章 Transact-SQL编程

第九章 Transact–SQL编程 * 批量(批处理) * 存储过程 * 触发器 §9.1 批量与流程控制语句 一、批量(批处理)的基本概念 1、批处理是一起提交SQL Server执行的一组SQL语句,以“go”结束; 批处理方式可以节省系统开销。 例1: USE pubs IF EXISTS (SELECT * from master.sysxlogins where name=yi) IF EXISTS (SELECT * from pubs.sysusers where name=yi and uid16382) sp_droplogin yi sp_addlogin chen sp_grantdbaccess chen,chen GO 例2: USE Pubs IF EXISTS (select * from sysobjects where id=object_id(vwprice) and OBJECTPROPERTY(id, IsView)=1) DROP VIEW vwprice GO CREATE VIEW vwprice as select title_id,title,price from titles GO SELECT * FROM vwprice where title like C% GO 2、不可以在数据库中象保存其它数据库对象一样保存批处理, 但是可以用记事本在脚本文件中存储脚本。 3、建立批处理的限制: (1)不能在同一个批量中绑定规则和缺省到列上,再使用它们。 (2)不能在同一个批量中定义和使用CHECK约束 (3) 不能在同一个批量中撤消对象并重新创建它们 (4) 不能在同一个批量中改变表和引用新列 (5) 可以在批量中用EXECUTE语句执行存储过程 二、批量中的语句 (一)打印消息 1、使用PRINT 或 SELECT 语句 在屏幕上显示用户定义的消息或变量的内容。 2、PRINT语句以文本形式显示消息或变量内容,不输出附加信息 3、SELECT语句以表格形式显示消息或变量内容 例如: DECLARE @MyName char (50) SELECT @MyName = Coomar Chris PRINT @MyName SELECT @MyName (二)注解入口 1.多行注解入口包含在/* 和 */中 2.单行注解入口以--(两个连字符)开始 (三)控制流语言 * IF…ELSE语句 * CASE语句 * WHILE语句 注意: 如果在分支或循环体中有多行T-SQL语句要执行,那么这些语句必须包含在关键字BEGIN...END块中。BEGIN…END块可以嵌套。 1.使用IF 语句 (1)、IF…ELSE… IF 条件1 SQL语句/集合 [ ELSE [条件2] ] SQL语句/集合 工作任务一: 根据用户设置的书籍类型,将相应类型书籍的单价提高6美元,并显示该类型书籍的最新价格情况。若无此类型书籍,则报告“Type Input Error!”信息。 declare @type varchar(20) set @type=aaaa if exists(select * from titles where type=@type) begin update titles set price=price+6 where type=@type select title,type,price from titles where type=@type end else print Type Input Error! go 2、CASE语句 (1)在有多个条件需要求值的情况下,用CASE语句的编程构造 CASE [输入表达式] WHEN 条件1 THEN 结果表达式1 [[WHEN 条件2 THEN 结果表达式2] [...]] End 工作任务二: 为“0736”号出版商出版书籍的平均单价划分档次, 平均单价超过30美元为“高价”, 低于10美元为“低价”, 两者之间为“基本价”。 declare @AvgPrice money,@PriceDesc char(6) set @avgprice=(select avg(price) from titles where pub_id=0736) set @PriceDesc= case when @avgprice=30 t

文档评论(0)

1亿VIP精品文档

相关文档