欢迎来到天天文库
浏览记录
ID:41222863
大小:451.01 KB
页数:73页
时间:2019-08-19
《《数据库编程基础》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第7章 数据库编程基础本章主要内容1.游标2.动态SQL3.存储过程4.触发器SQL的宿主使用SQL不仅可以作为独立的数据语言直接以交互的方式使用;SQL还可以作为子语言嵌入在宿主语言中使用,这里所说的宿主语言就是指我们常见的高级程序设计语言,如C语言等。把SQL嵌入到宿主语言中使用必须要解决以下三个方面的问题:嵌入识别问题:宿主语言的编译程序不能识别SQL语句,所以首要的问题就是要解决如何区分宿主语言的语句和SQL语句;宿主语言与SQL语言的数据交互问题:SQL语句的查询结果必须能够交给宿主语言处理,宿主语言的数据也要能够交给SQL语句使用;宿主语言的单记录与SQL的多
2、记录的问题:宿主语言一般一次处理一条记录,而SQL常常处理的是记录(元组)的集合,这个矛盾必须解决。如何解决嵌入识别问题?为了区分主语言和SQL语句,为SQL语句加一个识别前缀,常用前缀格式是:EXECSQL比如:EXECSQLINSERTINTO职工VALUES('WH8','E20',1560)计算机的编译系统如何识别这些前缀?预编译技术在编译之前首先将SQL语句转换为主语言的合法函数调用或合法语句,这个过程称为预编译。嵌入了SQL的应用程序的执行过程INCLUDESQLCA如:sqlca.sqlcode什么是主变量?如何解决宿主语言和SQL语言的数据交换问题?设立数
3、据通讯区、引入主变量的概念主变量的说明格式BEGINDECLARESECTION…主变量说明…ENDDECLARESECTION主变量说明的例:EXECSQLBEGINDECLARESECTION;charwhnumb[5]charcity[12]intwh_areaEXECSQLENDDECLARESECTION;使用主变量的例子:UPDATE仓库SET面积=:wh_areaWHERE仓库号=:whnumb;CursorDECLARECURSOROPENFETCHCLOSEDEALLOCATE为了解决宿主语言一次只能处理一条记录,而SQL语言一次处理多条记录的矛盾,引入
4、了Cursor的概念。相关的语句有:DECLARECURSOR语句的格式是:DECLARE<游标名>[INSENSITIVE][SCROLL]CURSORFOR[FOR{READONLY
5、UPDATE[OF〈列名〉[,〈列名〉…]]}]INSENSITIVE说明用数据的临时拷贝来定义游标,所有对游标的请求都反映在这个临时表上,因此这时的游标实际上是不允许修改的;SCROLL说明可以用所有的方法来存取数据,允许删除和更新(假定没有使用INSENSITIVE选项);FORREADONLY或FORUPDATE说明游标为只读的或可修改的。6、询块>定义一个游标(文件),它的内容是的查询结果(多个记录组成的临时表)。OPEN语句的格式是:OPEN<游标名>该语句的功能是打开或启动指出的游标,该游标名是用DECLARECURSOR语句已经定义好的。执行该语句意味着执行在DECLARECURSOR语句中定义的SELECT查询,并使游标指针指向查询结果的第一条记录。从游标中读记录FETCH[[NEXT7、PRIOR8、FIRST9、LAST10、ABSOLUTEn11、RELATIVEn]FROM]<游标名>[INTO:<主变量1>,:<主变量2>…]该语句的功能是取出游标的当前记录并送入主变量,同时使游标12、指针指向下一条记录(NEXT,或根据选项指向某条记录)。这里的游标必须是已经说明并打开了的,INTO后的主变量要与在DECLARECURSOR中SELECT的字段相对应。关闭游标CLOSE<游标名>释放游标DEALLOCATE<游标名>该命令的功能是删除由DECLARE说明的游标。该命令不同于CLOSE命令,CLOSE命令只是关闭游标,需要时还可以重新打开;而DEALLOCATE命令则要释放和删除与游标有关的所有数据结构和定义。理解游标与程序设计语言中的文件相对照:DECLARECURSOR相当于说明了一个文件;OPEN相当于打开文件;FETCH相当于读一条记录;CLOS13、E相当于关闭文件;DEALLOCATE语句相当于删除文件。使用游标的一个C语言程序段…EXECSQLBEGINDECLARESECTIONcharwhnumb[5]charcity[12]intwh_areaEXECSQLENDDECLARESECTION…EXECSQLDECLAREc1CURSORFORSELECT仓库号,城市,面积FROM仓库WHERE面积=:wh_areaEXECSQLOPENc1while(SQLCA.sqlcode<>100){EXECSQLFETCHc1INTO:whnumb,:city,:wh_
6、询块>定义一个游标(文件),它的内容是的查询结果(多个记录组成的临时表)。OPEN语句的格式是:OPEN<游标名>该语句的功能是打开或启动指出的游标,该游标名是用DECLARECURSOR语句已经定义好的。执行该语句意味着执行在DECLARECURSOR语句中定义的SELECT查询,并使游标指针指向查询结果的第一条记录。从游标中读记录FETCH[[NEXT
7、PRIOR
8、FIRST
9、LAST
10、ABSOLUTEn
11、RELATIVEn]FROM]<游标名>[INTO:<主变量1>,:<主变量2>…]该语句的功能是取出游标的当前记录并送入主变量,同时使游标
12、指针指向下一条记录(NEXT,或根据选项指向某条记录)。这里的游标必须是已经说明并打开了的,INTO后的主变量要与在DECLARECURSOR中SELECT的字段相对应。关闭游标CLOSE<游标名>释放游标DEALLOCATE<游标名>该命令的功能是删除由DECLARE说明的游标。该命令不同于CLOSE命令,CLOSE命令只是关闭游标,需要时还可以重新打开;而DEALLOCATE命令则要释放和删除与游标有关的所有数据结构和定义。理解游标与程序设计语言中的文件相对照:DECLARECURSOR相当于说明了一个文件;OPEN相当于打开文件;FETCH相当于读一条记录;CLOS
13、E相当于关闭文件;DEALLOCATE语句相当于删除文件。使用游标的一个C语言程序段…EXECSQLBEGINDECLARESECTIONcharwhnumb[5]charcity[12]intwh_areaEXECSQLENDDECLARESECTION…EXECSQLDECLAREc1CURSORFORSELECT仓库号,城市,面积FROM仓库WHERE面积=:wh_areaEXECSQLOPENc1while(SQLCA.sqlcode<>100){EXECSQLFETCHc1INTO:whnumb,:city,:wh_
此文档下载收益归作者所有