欢迎来到天天文库
浏览记录
ID:40246713
大小:1.19 MB
页数:243页
时间:2019-07-29
《数据库基础与应用 第2版 王珊 李盛恩 第7章_在应用中使用SQL-完成》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第7章在应用中使用SQL7.1嵌入式SQL7.2存储过程7.3ODBC简介7.4JDBC简介7.5触发器7.6小结7.1嵌入式SQL在高级程序设计语言中使用SQL语句操纵数据库需要解决两个问题:采用某种语法形式使得编译程序可以区分SQL语句和宿主语言的语句;提供一种机制使得SQL语言和宿主语言之间可以交换数据和执行状态。7.1嵌入式SQL7.1.1嵌入式SQL的一般形式在嵌入式SQL中,为了能够区分SQL语句与宿主语言语句,所有SQL语句都必须加前缀EXECSQL。例如,EXECSQLDROPTABLESC;EXECSQLSELECT*FR
2、OMStudent;EXECSQLGRANTUPDATEONStudentTOUser1;7.1嵌入式SQL7.1.1嵌入式SQL的一般形式为了不修改宿主语言的编译器,DBMS提供一个预编译器,预编译器识别嵌入式SQL语句,将它们换成SQL函数库中的函数调用,将最初的宿主语言和嵌入式SQL的混合体转换成纯宿主语言的代码,然后由编译器进行通常的编译和连接操作,最终生成可执行代码,完成过程控制和数据库操作,具体过程如图7.1所示。7.1嵌入式SQLHostlanguage+EmbeddedSQLPreprocessorHostlanguage+
3、FunctioncallsCompilerObject-codeProgramSQLlibrary图7.1嵌入式SQL的处理过程7.1嵌入式SQL7.1.2嵌入式SQL语句与宿主语言的通信将SQL嵌入到高级语言中混合编程,SQL语句负责操纵数据库,高级语言语句负责控制程序流程。这时程序中含有两种不同计算模型的语句,一种是描述性的面向集合的SQL语句,一种是过程性的高级语言语句,SQL标准主要使用宿主变量在它们之间互相交换数据,进行通信。7.1嵌入式SQL宿主变量使用声明节(declaresection)定义宿主变量,格式如下:EXECSQL
4、BEGINDECLARESECTION按照宿主语言的语法定义的变量EXECSQLENDDECLARESECTION7.1嵌入式SQL7.1.2嵌入式SQL语句与宿主语言之间的通信例如:EXECSQLBEGINDECLARESECTIONcharSno[8];charSname[9];charSsex[3];shortSage;charSdept[21];charSQLSTATE[6];EXECSQLENDDECLARESECTION7.1嵌入式SQL7.1.3查询结果为单个记录的SELECT语句在嵌入式SQL中,查询结果为单个记录的SELE
5、CT语句使用INTO子句把查询结果传送到宿主变量,供宿主语言继续处理。该语句的一般格式为:7.1嵌入式SQLEXECSQLSELECT[ALL
6、DISTINCT]<目标列表达式>[,<目标列表达式>]…INTO<宿主变量>[<指示变量>][,<宿主变量>[<指示变量>]]…FROM<表名或视图名>[,<表名或视图名>]…[WHERE<条件表达式>][GROUPBY<列名1>[HAVING<条件表达式>]][ORDERBY<列名2>[ASC
7、DESC]];7.1嵌入式SQL7.1.3查询结果为单个记录的SELECT语句1.INTO子句、WHE
8、RE子句的条件表达式、HAVING短语的的条件表达式中均可以使用宿主变量。2.查询返回的记录中,可能某些列为空值。如果INTO子句中宿主变量后面跟有指示变量,则当查询得出的某个数据项为空值时,系统会自动将相应宿主变量后面的指示变量置为负值,不再向宿主变量赋值。7.1嵌入式SQL7.1.3查询结果为单个记录的SELECT语句3.如果查询结果实际上并不是单条记录,而是多条记录,则程序出错,DBMS将SQLSTATE的值设置为21000。7.1嵌入式SQL[例1]查询某个学生的信息,这个学生的学号存放在宿主变量Sno中,并且将查询得到的学生信息存
9、放到上一小节定义的变量中。EXECSQLSELECTSname,Ssex,Sage,SdeptINTO:Sname,:Ssex,:Sage,:SdeptFROMStudentWHERESno=:Sno;7.1嵌入式SQL[例2]查询某个学生选修某门课程的成绩。由于学生的成绩可能是空值,使用了指示变量gradenullflag。EXECSQLSELECTGradeINTO:grade:gradenullfalgFROMSCWHERESno=:SnoANDCno=:Cno;7.1嵌入式SQL7.1.4游标SQL语言与宿主语言有不同的数据处理方式
10、。SQL语言是面向集合的,一条SQL语句将产生或处理多条记录。而宿主语言是面向记录的,一组宿主变量一次只能存放一条记录。所以仅使用宿主变量并不能完全满足SQL语句向应用程序输出数
此文档下载收益归作者所有