版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第十章 Transact-SQL程序设计 教学目标:教学目标: 通过本章的学习,应掌握以下内容:通过本章的学习,应掌握以下内容:BEGIN 和和 END 要一起使用,将语句块包括要一起使用,将语句块包括起来。起来。IFELSE 语句实现根据条件来执行某些语句语句实现根据条件来执行某些语句块)。块)。WHILE 循环可根据条件多次重复执行语句循环可根据条件多次重复执行语句块)。块)。GOTO 语句将破坏程序结构化的特点,尽量不语句将破坏程序结构化的特点,尽量不要使用。要使用。WAITFOR 语句使语句使SQL Server 的处理在等待的处理在等待一段时间或到某一时刻时,继续执行。一段时间或到某
2、一时刻时,继续执行。RETURN 语句无条件从批处理、存储过程或语句无条件从批处理、存储过程或触发器中退出,其后的任何语句将不再执行。触发器中退出,其后的任何语句将不再执行。PRINT 语句为用户返回一个用户定义的消息。语句为用户返回一个用户定义的消息。SET 语句用以设置服务器处理特定条件的方式。语句用以设置服务器处理特定条件的方式。 预备知识问题) SQL Server 是如何处理指令代码的? 在数据库中编写代码有什么好处? 减少网络通讯量 减少部署成本 实现瘦客户机模式,减少这个网络的构建成本 使用户得到统一的结果 加快程序的执行速度 对数据库安全限制的补充 避免冲突的发生 保证事务的执
3、行服务器处理SQL语句的过程 当服务器接收到一个SQL查询语句时,将按照如下过程进行处理:分析过程。首先把这个批处理作为一个整体进行分析。在分析时,服务器检查命令动词和关键字的语法,验证表和字段的名字的合法性。再优化过程。在优化阶段,服务器会确定完成一个查询的最有效的办法。编译过程。在编译阶段,将生成这个批处理的可执行代码。执行过程。最后,这个批处理中的语句将在运行阶段一句一句地执行。SQL Server 支持的数据类型支持的数据类型在SQL Server 2019中,数据类型通常指字段列、存储过程参数和局部变量的数据特征。数据类型由SQL Server系统定义,通常把这种数据类型称为系统数据
4、类型。SQL Server也支持用户定义的数据类型。在表Table中创建字段列或声明一个局部变量时,都必须为它选择一种数据类型 ,选择后就确定了如下特征:在字段列中可以存储任何数据数值、字符串、日期值等)。对于数值或日期数据类型,确定了允许在字段列中使用值的范围。对于字符串和二进制数据类型,确定了允许在字段列中,存储的最大数据长度。用户定义数据类型 SQL Server 允许在系统数据类型的基础上,建立用户自定义的数据类型UDT)。 用户定义数据类型可以应用在ALTER DATABASE 和 CREATE DATABASE 语句中,并且可以将默认规则应用在用户定义的数据类型上,为用户定义数据类
5、型的字段提供默认值和完整性约束。系统表systypes 在SQL Server中,所有的数据类型都不是关键字,它们均被当作数据存储在SQL 数据库级的系统表 systypes 中, systypes 既包括系统数据类型,也包括用户定义的数据类型。 systypes 表中包含了本章所介绍的所有数据类型,并且包含了许多数据类型的NULL 值。注释符注释符 在在Transact-SQL Transact-SQL 中可以使用两类注释符:中可以使用两类注释符: ANSI ANSI 标准的两个连字符构成的注释符标准的两个连字符构成的注释符- ,用于单行注释。,用于单行注释。 与与C C语言相同的程序注释符
6、号,即语言相同的程序注释符号,即/* * */。“/ /* *”用于注释文字的开头,用于注释文字的开头, “* */”/”用于注释文字的结尾。可在程序中用于注释文字的结尾。可在程序中标识多行文字为注释。标识多行文字为注释。块语句块语句BEGINEND IF,WHILE等语句只允许包含一条语句,但实际操作过程中,一条语句往往不能满足复杂程序的设计要求。这时,需要使用BEGINEND语句将多条SQL语句封装起来构成一个语句块。处理时,整个语句块视为一条语句。 语法 BEGIN END 阐明 虽然BEGINEND 几乎可以用在程序中的任何地方,但它最常见的用法是和WHILE 或IF ELSE 组合使
7、用。 在BEGINEND 中可以嵌套另外的BEGINEND 来定义另一程序块。 判断语句判断语句IFELSE 语法 IF ELSE 阐明 其中 可以是各种表达式的组合,但表达式的值必须 是逻辑值“真或“假”。 ELSE 子句是可选的。最简单的 IF 语句没有 ELSE 子句部分。 IF. ELSE 用来判断当某一条件成立时,执行某段程序,条件不成 立时执行另一段程序。 若不使用语句块, IF 或 ELSE 只能执行一条命令。 IF. ELSE 语句可以进行嵌套。IF EXISTS 语句语句 IF EXISTS 语句用于检测数据是否存在,而不考虑与之匹配的总共行数。 语法: IF NOT EXI
8、STSSELECT 子查询) ELSE 阐明: SQL 服务器找到第一个匹配的行记录),就停止执行SELECT子查询语句。IF 语句最多可嵌套150层。CASE 语句语句-1 多分支选择结构 CASE ,通常是用n个条件来控制n+1个操作的。 CASE 语句主要是用来取代嵌套的 IF 语句。 CASE 语句有两种格式: 格式一:CASE 算术表达式 WHEN 算术表达式 THEN 算术表达式 WHEN 算术表达式 THEN 算术表达式 ELSE 算术表达式 ENDCASE 语句语句-2 格式二:CASE WHEN 条件表达式 THEN 算术表达式 WHEN 条件表达式 THEN 算术表达式 E
9、LSE 算术表达式 END CASE 语句可以嵌套到任何SQL命令中。 例10-5:调整学生的成绩。凡低于70分的增加10%,7080分的增加8%,8090分的增加5%,其他的增加2%。 循环语句循环语句WHILE-1 语法: WHILE 条件表达式 BEGIN SQL 命令行或语句块 BREAK CONTINUE SQL 命令行或程序块 END循环语句循环语句WHILE-2 阐明: WHILE 语句在条件表达式成立布尔表达式为“真”)时,重复执行命令行或语句块,直到条件表达式的值为逻辑“假时,结束执行循环体。 CONTINUE 语句可以让程序跳过CONTINUE 语句之后的命令行或语句块,回
10、到WHILE 的条件表达式,重新判断其逻辑值。 BREAK 语句则让程序跳出循环体,终了 WHILE 语句的执行。 WHILE 语句也可以嵌套。跳转语句跳转语句GOTO 语法: GOTO 标识符 阐明: GOTO 语句用来改变程序执行的流程,使程序跳到标有标识符的指定的程序行,再继续往下执行。 作为跳转目标的标识符,可以是数字与字符的组合,但必须以:结尾。在GOTO 语句行标识符后不必跟:事件处理语句事件处理语句WAITFOR-1 语法: WAITFOR DELAY时间| TIME 时间| ERROREXIT | PROCESSEXIT | MIRROREXIT 阐明: WAITFOR 语句用
11、来暂时停止程序执行,直到所设定的等待时间 已过或所设定的时间已到,才继续往下执行。 时间必须为datetime 类型的数据,如11:15:27,最多可达24小时。事件处理语句事件处理语句WAITFOR-2 各关键字含义如下: DELAY:用来设定等待时间,最多可达24小时。 TIME:用来设定等待结束的时间点。 ERROREXIT:直到处理非正常中断。 PROCESSEXIT:直到处理正常结束或非正常中断。 MIRROREXIT:直到镜像设备失败。 例10-8:等待2小时29分零59秒后,才执行 INSERT 语句。 WAITFOR DELAY 02:29:59 INSERT INTO 学生表
12、学号,姓名) VALUES201907103,许晴莎)RETURN语句语句-1语法:语法: RETURN ( 整数值整数值 ) 阐明:阐明:RETURN 语句用于结束当前程序的执行,返回到上一个调用它的程语句用于结束当前程序的执行,返回到上一个调用它的程序或其他程序,在括号内可指定一个返回值。序或其他程序,在括号内可指定一个返回值。一般情况下,一般情况下, RETURN 语句后不需要任何表达式,但如果在应用语句后不需要任何表达式,但如果在应用程序或存储过程中调用了一个存储过程,通常在被调用的过程中使用程序或存储过程中调用了一个存储过程,通常在被调用的过程中使用RETURN 语句返回一个整数值,
13、以便向父进程报告本进程的执行状语句返回一个整数值,以便向父进程报告本进程的执行状态。态。例:例: DECLARE x, int, y int SELECT x=1, y =2 IF xy RETURN(1) ELSE RETURN(2)RETURN语句语句-2 如果没有指定返回值,SQL Server 系统会根据程序执行结果,返回一个内定值,如下表所示:返回值返回值 含义含义 返回值返回值 含义含义 0程序执行成功 -7资源错误 -1找不到对象 -8非致命的内部错误 -2数据类型错误 -9已达到系统的极限-3死锁 -10,-11致命的内部不一致错误 -4违反权限原则 -12表或指针破坏 -5语
14、法错误 -13数据库破坏 -6用户造成的一般错误 -14硬件不足 PRINT 语句语句 消息是可以小于256个字符的文本。 PRINT 语句只能传输文本型的字符串,或单个字符型变量。 PRINT 语句也可以传递全局变量,但只能是字符类型的全局变量如:version。 语法: PRINT 任何ASCII 文本| 局部变量名| 全局变量| 字符串表式 阐明: PRINT 语句向客户端返回一个用户自定义的信息,即显示一个字符串其最大长度为255个字符)、局部变量或全局变量。 例:向消息处理程序传递一个字符串的例子。 PRINT This is a message关于错误处理关于错误处理 在SQL S
15、erver 中,错误信息包括四项内容: 错误号: 错误严重性 形状 音讯 例:下面的语句将向系统错误表中添加一条自定义信息。 Sp_addmessage 51000,12,命令中包含了无效的用户标识符, US-English,TRUE 例:下面的语句将改变消息的系统日志行为。 Sp_altermessage 51000,WITH LOG,FALSE 例:下面的语句将上例中的自定义消息从系统表中删除。 Sp_dropmessage 51000RAISERROR 语句语句-1 语法:语法: RAISERROR (msg_id | msg_str ,severity,state ,argument
16、,n ) WITH LOG 阐明:阐明: msg_id :存储于:存储于sysmessages 表中表中用户定义的错误信息。用户定义的错误信用户定义的错误信息。用户定义的错误信息的错误号应大于息的错误号应大于50000 msg_str:如果该信息包含的字符超过:如果该信息包含的字符超过400个,则只能显示个,则只能显示397个并将添加一个省个并将添加一个省略号以表示该信息已被截断。所有特定消略号以表示该信息已被截断。所有特定消息的标准消息息的标准消息ID是是14000。RAISERROR 语句语句-2 severity:用户定义的与消息关联的严重级别。用户可以使用从0到18之间的严重级别。19到25之间的严重级别只能由sysadmin 固定服务器角色成员使用。要使用19到25之间的严重级别,必须选择WITHLOG 选项。 state:从1到127的任意整数,表示有关错误调用状态的信息。 State 的赋值默认为1。 agrument:用于取代在msg_str 中的变量或取代对应于msg_id 的消息,替代参数不能超过20个。设置选项设置选项S
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 草地贪夜蛾绿色防控手册
- 奶牛围产期饲养管理技术规程
- 会员生日关怀活动方案
- 基础体测数据录入指南
- 果蔬采收前农药安全间隔期规定
- 农田杂草科学防控实施方案
- 客户预约退改签规范
- 仓储物流REITs行业市场前景及投资研究报告:换租潮估值洗牌
- 蔬菜冷链物流运输操作指引
- 体成分检测分析身体数据解读
- 幼儿园教师招生奖惩制度
- 外科术后并发症防治手册
- 项目部质量培训制度
- 北京中国新闻社2025年度面向社会招聘10人笔试历年参考题库附带答案详解
- 高二上学期高雅人士课堂惩罚小游戏(课件版)
- 北京某高层办公楼施工组织设计(创鲁班奖)
- 升白针健康科普
- 中级测绘员考试备考策略与方法
- 操场提升方案
- DB51∕T 3042-2023 四川省野生杓兰属植物保护技术规程
- 高校生涯特色咨询室建设方案
评论
0/150
提交评论