存储过程和触发器_第1页
存储过程和触发器_第2页
存储过程和触发器_第3页
存储过程和触发器_第4页
存储过程和触发器_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库编程,SQL语言主要用于数据查询和更新。由于缺乏变量定义、流程控制等高级编程语言特性,难以担负数据处理的任务。对数据的加工处理主要由数据库应用程序来完成数据库应用程序的两种形式:客户端应用程序数据库内部程序,数据库服务器,数据库编程,数据库,客户端应用程序,网络数据传输,数据库内部程序,内部数据交换,数据库内部程序执行效率更高,但功能受限,客户端应用程序适用于通用的数据处理功能,数据库内部的应用编程,Transact-SQL语言程序设计存储过程触发器,TransactSQL,TransactSQL是所有应用程序(包括部分SQLServer管理工具)与SQLServerDBMS进行交互所使用的语言TransactSQL=SQL+高级编程语言可以应用Transact-SQL进行数据库编程实现数据处理功能,TransactSQL,变量流程控制语句数据库命令常用函数游标编程,变量,Transact-SQL中可以使用两种变量:局部变量和全局变量。1局部变量局部变量是用户可自定义的变量,它的作用范围仅在程序内部。在程序中通常用来储存从表中查询到的数据,或当作程序执行过程中暂存变量使用。局部变量必须以开头,而且必须先用DECLARE命令说明后才可使用。其说明形式如下:DECLARE变量名变量类型,变量名变量类型,变量,在Transact-SQL中不能像在一般的程序语言中一样使用“变量=变量值”来给变量赋值,必须使用SELECT或SET命令来设定变量的值。其语法如下:SELECT局部变量=变量值SET局部变量量=变量值【例】声明一个长度为8个字符的变量id,并赋值。declareidchar(8)selectid=10010001,2全局变量全局变量是SQLServer系统内部使用的变量,其作用范围并不局限于某一程序,而是任何程序均可随时调用。全局变量通常存储一些SQLServer的配置设定值和效能统计数据。用户可在程序中用全局变量来测试系统的设定值或Transact-SQL命令执行后的状态值。全局变量不是由用户的程序定义的,它们是在服务器级定义的,只能使用预先说明及定义的全局变量。引用全局变量时必须以“”开头。局部变量的名称不能与全局变量的名称相同,否则会在应用中出错。,变量,3注释符在Transact-SQL中可使用两类注释符:1ANSI标准的注释符“-”用于单行注释。2与C语言相同的程序注释符号,即“/*/”,/*用于注释文字的开头,*/用于注释文字的结尾,可在程序中标识多行文字为注释。,流程控制命令,Transact-SQL语言使用的流程控制命令与常见的程序设计语言类似,主要有以下几种控制命令。BEGINEND其语法如下:BEGINEND,流程控制命令,BEGINEND用来设定一个程序块,将在BEGINEND内的所有程序视为一个单元执行。BEGINEND经常在条件语句(如IFELSE)中使用。在BEGINEND中可嵌套另外的BEGINEND来定义另一程序块。,IFELSE其语法如下:IFELSE条件表达式式,流程控制命令,流程控制命令,其中:可以是各种表达式的组合,但表达式的值必须是逻辑值“真”或“假”。ELSE子句是可选的,最简单的IF语句没有ELSE子句部分。IFELSE用来判断当某一条件成立时执行某段程序,条件不成立时执行另一段程序。如果不使用程序块,IF或ELSE只能执行一条命令。IFELSE可以进行嵌套,在Transact-SQL中最多可嵌套32级。,【例】从SC数据表中求出学号为S1同学的平均成绩,如果此平均成绩大于或等于60分,则输出“pass”信息。if(selectavg(score)fromscwheresno=S1groupbysno)=60beginprintpassend,流程控制命令,CASECASE命令有两种语句格式:格式1:CASEWHENTHENWHENTHENELSEEND,流程控制命令,流程控制命令,该语句的执行过程是:将CASE后面表达式的值与各WHEN子句中的表达式的值进行比较,如果二者相等,则返回THEN后的表达式的值,然后跳出CASE语句,否则返回ELSE子句中的表达式的值。ELSE子句是可选项。当CASE语句中不包含ELSE子句时,如果所有比较失败时,CASE语句将返回NULL。,【例】从学生表S中,选取SNO,SEX,如果SEX为“男”则输出“M”,如果为“女”输出“F”。SELECTSNO,SEX=CASEsexWHEN男THENMWHEN女THENFENDFROMS,流程控制命令,格式2:CASEWHENTHENWHENTHENELSEEND,流程控制命令,流程控制命令,该语句的执行过程是:首先测试WHEN后的表达式的值如果其值为真,则返回THEN后面的表达式的值,否则测试下一个WHEN子句中的表达式的值如果所有WHEN子句后的表达式的值都为假,则返回ELSE后的表达式的值如果在CASE语句中没有ELSE子句,则CASE表达式返回NULL。,【例】从SC表中查询所有同学选课成绩情况,凡成绩为空者输出“未考”、小于60分输出“不及格”、60分至70分输出“及格”、70分至90分输出“良好”、大于或等于90分时输出“优秀”。SELECTSNO,CNO,SCORE=CASEWHENSCOREISNULLTHEN未考WHENSCORE=60ANDSCORE=70ANDSCORE=90THEN优秀ENDFROMSC,WHILECONTINUEBREAK其语法如下:WHILEBEGINBREAKCONTINUE命令行或程序块END,流程控制命令,WHILE命令在设定的条件成立时,会重复执行命令行或程序块。CONTINUE命令可以让程序跳过CONTINUE命令之后的语句,回到WHILE循环的第一行,继续进行下一次循环。BREAK命令则让程序完全跳出循环,结束WHILE命令的执行。WHILE语句也可以嵌套。,流程控制命令,如:以下程序计算1100之间所有能被3整除的数的个数及总和。DECLARESSMALLINT,ISMALLINT,NUMSSMALLINTSETS=0SETI=1SETNUMS=0WHILE(I31)beginraiserror(toomanyinonec

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论