第八章 数据库编程.pdf

上传人:qwe****56 文档编号:70015068 上传时间:2023-01-14 格式:PDF 页数:39 大小:180.33KB
返回 下载 相关 举报
第八章 数据库编程.pdf_第1页
第1页 / 共39页
第八章 数据库编程.pdf_第2页
第2页 / 共39页
点击查看更多>>
资源描述

《第八章 数据库编程.pdf》由会员分享,可在线阅读,更多相关《第八章 数据库编程.pdf(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、数据库系统概论数据库系统概论数据库系统概论An Introduction to Database System第八章 数据库编程第八章 数据库编程数据库系统概论第八章 数据库编程第八章 数据库编程8.1 嵌入式嵌入式SQL8.2 存储过程存储过程8.3 ODBC编程编程数据库系统概论8.1 嵌入式嵌入式SQL?SQL语言提供了两种不同的使用方式:语言提供了两种不同的使用方式:交互式交互式嵌入式嵌入式?为什么要引入嵌入式为什么要引入嵌入式SQLSQL语言是非过程性语言语言是非过程性语言事务处理应用需要高级语言事务处理应用需要高级语言?这两种方式细节上有差别,在程序设计的环境下,这两种方式细节上有

2、差别,在程序设计的环境下,SQL语句要做某些必要的扩充(语句要做某些必要的扩充(ESQL)例如,将学生成绩从百分制改为等级制:例如,将学生成绩从百分制改为等级制:90-100为为A,80-89为为B70-79为为C,60-69为为D0-59为为E数据库系统概论嵌入式嵌入式SQL的处理过程的处理过程?嵌入式嵌入式SQL是将是将SQL语句嵌入程序设计语言中语句嵌入程序设计语言中?主语言主语言被嵌入的程序设计语言,如被嵌入的程序设计语言,如C、C+、Java,称为宿主语言,简称主语言。,称为宿主语言,简称主语言。?处理过程处理过程预编译方法预编译方法数据库系统概论嵌入式嵌入式SQL的处理过程(续)的

3、处理过程(续)主语言程序含主语言程序含ESQL语句语句RDBMS的预处理程序的预处理程序ESQL语句转换为函数调用语句转换为函数调用主语言编译程序主语言编译程序目标语言程序目标语言程序ESQL基本处理过程数据库系统概论嵌入式嵌入式SQL小结小结?什么是嵌入式SQL什么是嵌入式SQL?为什么要引入嵌入式SQL为什么要引入嵌入式SQL?处理过程处理过程数据库系统概论8.2 存储过程存储过程?SQL-invoked routines(SQL99):):存储过程存储过程(SQL-invoked procedure)函数函数(SQL-invoked function)?PL/SQL:是编写存储过程的一种

4、过程语言是编写存储过程的一种过程语言SQL的扩展的扩展增加了增加了过程化过程化语句功能语句功能基本结构是块基本结构是块?块之间可以互相嵌套块之间可以互相嵌套?每个块完成一个逻辑操作每个块完成一个逻辑操作数据库系统概论一、一、PL/SQL的块结构的块结构?PL/SQL块的基本结构:块的基本结构:1.定义部分定义部分DECLARE -变量、常量、游标、异常等变量、常量、游标、异常等?定义的变量、常量等只能在该基本块中使用定义的变量、常量等只能在该基本块中使用?当基本块执行结束时,定义就不再存在当基本块执行结束时,定义就不再存在数据库系统概论PL/SQL的块结构(续)的块结构(续)?PL/SOL块的

5、基本结构块的基本结构(续续):2.执行部分执行部分BEGIN-SQL语句、语句、PL/SQL的流程控制语句的流程控制语句EXCEPTION-异常处理部分异常处理部分END;数据库系统概论二、控制结构二、控制结构?PL/SQL 流程控制:流程控制:条件控制语句条件控制语句循环控制语句循环控制语句错误处理错误处理数据库系统概论控制结构(续)控制结构(续)?条件控制语句条件控制语句IF-THEN,IF-THEN-ELSE和嵌套的和嵌套的IF语句语句?循环控制语句循环控制语句LOOP,WHILE-LOOP和和FOR-LOOP?错误处理:错误处理:如果如果PL/SQL在执行时出现异常,则应该让程序在产生

6、异在执行时出现异常,则应该让程序在产生异常常的语句处停下来,根据异常的类型去执行异常处理语句的语句处停下来,根据异常的类型去执行异常处理语句SQL标准对数据库服务器提供什么样的异常处理做出了建议,要求标准对数据库服务器提供什么样的异常处理做出了建议,要求PL/SQL管理器提供完善的异常处理机制管理器提供完善的异常处理机制数据库系统概论PL/SQL 流程控制示例:流程控制示例:在在SQLServer2005中新建查询,执行下面的程序段中新建查询,执行下面的程序段declare i intselect i=1while i=5beginprint 第第+cast(i as varchar(1)+次

7、循环次循环select i=i+1end数据库系统概论三、存储过程三、存储过程?存储过程存储过程:由:由PL/SQL语句书写的过程,经编译和优化后存储在数据库服务器中,使用时只要调用即可。语句书写的过程,经编译和优化后存储在数据库服务器中,使用时只要调用即可。?存储过程的优点:存储过程的优点:1.运行效率高运行效率高2.降低了客户机和服务器之间的通信量降低了客户机和服务器之间的通信量3.方便实施企业规则方便实施企业规则数据库系统概论?存储过程的用户接口:存储过程的用户接口:1.创建存储过程创建存储过程2.执行存储过程执行存储过程3.删除存储过程删除存储过程数据库系统概论?CREATE Proc

8、edure 过程名(参数过程名(参数1,参数,参数2,.)AS;?过程名:数据库服务器合法的对象标识过程名:数据库服务器合法的对象标识?参数列表:用名字来标识调用时给出的参数值,必须指定值的数据类型。参数也可以定义输入参数、输出参数或输入参数列表:用名字来标识调用时给出的参数值,必须指定值的数据类型。参数也可以定义输入参数、输出参数或输入/输出参数。默认为输入参数。输出参数。默认为输入参数。?过程体:是一个过程体:是一个。包括声明部分和可执行语句部分。包括声明部分和可执行语句部分1.创建存储过程:创建存储过程:数据库系统概论例例1在在SQLServer2005中创建存储过程,统计某门课程的平均

9、成绩,新建查询,执行下面的命令。中创建存储过程,统计某门课程的平均成绩,新建查询,执行下面的命令。CREATE PROCEDURE dbo.avggrade cno varchar(20)ASdeclare counter intdeclare myavg floatselect counter=count(*)from scwhere cno=cnoif(counter=0)print cno+-+没有该课程的选课记录!没有该课程的选课记录!elsebeginselect myavg=avg(grade)from scwhere cno=cnoprint cno+-+(cast(myavg

10、as varchar(20)end数据库系统概论?CALL/PERFORM/EXEC Procedure 过程名过程名(参数参数1,参数,参数2,.);?在在PL/SQL中,数据库服务器支持在过程体中调用其他存储过程中,数据库服务器支持在过程体中调用其他存储过程2.执行存储过程:执行存储过程:数据库系统概论?例如:新建查询,调用存储过程例如:新建查询,调用存储过程avggrade,计算,计算2号课程的平均成绩号课程的平均成绩exec avggrade 2?例如:调用存储过程例如:调用存储过程avggrade,计算,计算1-5号课程的平均成绩号课程的平均成绩declare i intselect

11、 i=1while i=5beginexec avggrade iselect i=i+1end数据库系统概论DROP PROCEDURE 过程名过程名3.删除存储过程删除存储过程数据库系统概论四、游标(四、游标(cursor)?游标游标游标是系统为用户开设的一个数据缓冲区,存放游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果语句的执行结果每个游标区都有一个名字每个游标区都有一个名字用户可以用用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理数据库系统概论游标(续)游标(续)?为什么要使用游标为

12、什么要使用游标SQL语言与主语言具有不同数据处理方式语言与主语言具有不同数据处理方式?SQL语言是面向集合的,一条语言是面向集合的,一条SQL语句原则上可以产生或处理多条记录语句原则上可以产生或处理多条记录?主语言是面向记录的,一组主变量一次只能存放一条记录主语言是面向记录的,一组主变量一次只能存放一条记录仅使用主变量并不能完全满足仅使用主变量并不能完全满足SQL语句向应用程序输出数据的要求语句向应用程序输出数据的要求嵌入式嵌入式SQL引入了游标的概念,用来协调这两种不同的处理方式引入了游标的概念,用来协调这两种不同的处理方式数据库系统概论游标(续)游标(续)?使用游标的步骤使用游标的步骤1.

13、说明游标说明游标2.打开游标打开游标3.推进游标指针并取当前记录推进游标指针并取当前记录4.关闭游标关闭游标数据库系统概论1.说明游标说明游标?使用使用DECLARE语句语句?语句格式语句格式DECLARE CURSOR FOR;?功能功能是一条说明性语句,这时是一条说明性语句,这时DBMS并不执行并不执行SELECT指定的查询操作。指定的查询操作。数据库系统概论2.打开游标打开游标?使用使用OPEN语句语句?语句格式语句格式OPEN;?功能功能打开游标实际上是执行相应的打开游标实际上是执行相应的SELECT语句,把所有满足查询条件的记录从指定表取到缓冲区中语句,把所有满足查询条件的记录从指定

14、表取到缓冲区中这时游标处于活动状态,指针指向查询结果集中第一条记录这时游标处于活动状态,指针指向查询结果集中第一条记录数据库系统概论3.推进游标指针并取当前记录推进游标指针并取当前记录?使用使用FETCH语句语句?语句格式语句格式FETCH NEXT|PRIOR|FIRST|LAST FROM INTO,.数据库系统概论推进游标指针并取当前记录(续)推进游标指针并取当前记录(续)?功能功能指定方向推动游标指针,然后将缓冲区中的当前记录取出来送至主变量供主语言进一步处理指定方向推动游标指针,然后将缓冲区中的当前记录取出来送至主变量供主语言进一步处理NEXT|PRIOR|FIRST|LAST:指定

15、推动游标指针的方式:指定推动游标指针的方式?NEXT:向前推进一条记录:向前推进一条记录?PRIOR:向回退一条记录:向回退一条记录?FIRST:推向第一条记录:推向第一条记录?LAST:推向最后一条记录:推向最后一条记录?缺省值为缺省值为NEXT数据库系统概论4.关闭游标关闭游标?使用使用CLOSE语句语句?语句格式语句格式CLOSE;?功能功能关闭游标,释放结果集占用的缓冲区及其他资源关闭游标,释放结果集占用的缓冲区及其他资源?说明说明游标被关闭后,就不再和原来的查询结果集相联系游标被关闭后,就不再和原来的查询结果集相联系被关闭的游标可以再次被打开,与新的查询结果相联系被关闭的游标可以再次

16、被打开,与新的查询结果相联系数据库系统概论游标示例游标示例?在在SC表中增加一个字段:表中增加一个字段:Gradelevel char(1)?根据学生成绩计算成绩等级,保存到根据学生成绩计算成绩等级,保存到gradelevel中:中:90-100为为A,80-89为为B70-79为为C,60-69为为D0-59为为E?编写存储过程编写存储过程gradelevel?调用调用gradelevel:EXEC gradelevel数据库系统概论CREATE PROCEDURE dbo.gradelevel AS-mygrade:成绩,成绩,mylevel:级别级别.DECLARE mygrade in

17、t,mylevel char(1)-下面定义游标下面定义游标.DECLARE level_cursor CURSOR FORSELECT grade,gradelevelFROM sc-下面打开游标下面打开游标.OPEN level_cursor-下面从游标中取出第一行,放到对应的变量中下面从游标中取出第一行,放到对应的变量中.FETCH NEXT FROM level_cursorINTO mygrade,mylevel数据库系统概论-进入循环进入循环WHILE FETCH_STATUS=0BEGIN-计算级别计算级别.if mygrade is nullselect mylevel=nul

18、lelseif mygrade60select mylevel=Eelse if mygrade70 select mylevel=D else if mygrade80 select mylevel=C else if mygrade90 select mylevel=B else select mylevel=A 数据库系统概论-修改中对应行的级别修改中对应行的级别.update sc set gradelevel=mylevelwhere CURRENT OF level_cursor-从游标中取下一行从游标中取下一行.FETCH NEXT FROM level_cursorINTO m

19、ygrade,mylevelEND-关闭游标关闭游标.CLOSE level_cursorDEALLOCATE level_cursor数据库系统概论使用游标的使用游标的SQL语句语句?必须使用游标的必须使用游标的SQL语句语句查询结果为多条记录的查询结果为多条记录的SELECT语句语句CURRENT形式的形式的UPDATE语句语句CURRENT形式的形式的DELETE语句语句数据库系统概论CURRENT形式的形式的UPDATE语句和语句和DELETE语句语句(续续)?如果只想修改或删除其中某个记录如果只想修改或删除其中某个记录?用带游标的用带游标的SELECT语句查出所有满足条件的记录语句查

20、出所有满足条件的记录?从中进一步找出要修改或删除的记录从中进一步找出要修改或删除的记录?用用CURRENT形式的形式的UPDATE语句和语句和DELETE语句修改或删除之语句修改或删除之?UPDATE语句和语句和DELETE语句中的子句:语句中的子句:WHERE CURRENT OF 表示修改或删除的是最近一次取出的记录,即游标指针指向的记录表示修改或删除的是最近一次取出的记录,即游标指针指向的记录数据库系统概论不用游标的不用游标的SQL语句(续)语句(续)?一、查询结果为单记录的一、查询结果为单记录的SELECT语句语句?二、非二、非CURRENT形式的增删改语句形式的增删改语句数据库系统概

21、论存储过程小结存储过程小结?PL/SQL?存储过程的创建、调用、删除存储过程的创建、调用、删除?在存储过程中使用游标在存储过程中使用游标数据库系统概论8.3 ODBC简介简介?ODBC产生的原因:产生的原因:由于不同的数据库管理系统的存在,在某个由于不同的数据库管理系统的存在,在某个RDBMS下编写的应用程序就不能在另一个下编写的应用程序就不能在另一个RDBMS下运行下运行许多应用程序需要共享多个部门的数据资源,访问不同的许多应用程序需要共享多个部门的数据资源,访问不同的RDBMS 数据库系统概论ODBC简介(续)简介(续)?ODBC:是微软公司开放服务体系是微软公司开放服务体系(Window

22、s Open Services Architecture,WOSA)中有关数据库的一个组成部分中有关数据库的一个组成部分提供了一组访问数据库的标准提供了一组访问数据库的标准API 已经已经ISO认证,成为国际标准认证,成为国际标准?ODBC约束力:约束力:规范应用开发规范应用开发规范规范RDBMS应用接口应用接口数据库系统概论发言人发言人汉语汉语日语日语俄语俄语英语英语英汉对照英汉对照 英日对照英日对照 英俄对照英俄对照ODBC工作原理概述工作原理概述应用程序应用程序ODBC API驱动程序驱动程序 驱动程序驱动程序驱动程序驱动程序SQL ServerOracleAccessODBC Driver Manager数据库系统概论创建创建ODBC数据源连接数据源连接SQLServer数据库数据库?创建一个连接学生创建一个连接学生-课程数据库的课程数据库的ODBC数据源数据源?主语言中使用主语言中使用ODBC数据源连接数据库数据源连接数据库

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁