)1数据库系统概论AnIntroductiontoDatabaseSystem第八章数据库编程第八章数据库编程(1)(1))2第八章数据库编程第八章数据库编程8.18.1嵌入式嵌入式SQLSQL8.28.2存储过程存储过程8.3ODBC8.3ODBC编程编程)3学习目标学习目标了解嵌入式SQL的一般形式理解嵌入式SQL语句与主语言之间的通信掌握不用游标不用游标的SQL语句掌握使用游标使用游标的SQL语句了解动态SQL)48.18.1嵌入式嵌入式SQLSQLSQLSQL语言提供了两种不同的使用方式:语言提供了两种不同的使用方式:交互式交互式:作为独立语言在终端交互方式下使用嵌入式嵌入式:将SQL语言嵌入到某种高级语言中为什么要引入嵌入式为什么要引入嵌入式SQLSQLSQL语言:是面向集合面向集合的描述性语言,是非过程的事务处理需要高级语言的过程性结构过程性结构来实现。这两种方式细节上的差别:这两种方式细节上的差别:在程序设计环境下,SQL语句要做某些必要的扩充)58.18.1嵌入式嵌入式SQLSQL8.1.1嵌入式SQL的处理过程8.1.2嵌入式SQL与主语言之间通信8.1.3不用游标的SQL语句8.1.4使用游标的SQL语句8.1.5动态SQL简介8.1.1嵌入式SQL的处理过程8.1.2嵌入式SQL与主语言之间通信8.1.3不用游标的SQL语句8.1.4使用游标的SQL语句8.1.5动态SQL简介)68.1.18.1.1嵌入式嵌入式SQLSQL的处理过程的处理过程1.1.主语言主语言嵌入式SQL是将SQL语句嵌入到程序设计语言中,被嵌入的程序设计语言称为宿主语言,简称主语言。)78.1.18.1.1嵌入式嵌入式SQLSQL的处理过程的处理过程(1)由RDBMS的预处理程序对源程序进行扫描,识识别出别出SQLSQL语句;(2)把它们转换转换成主语言调用语句,以使主语言编译程序能识别它;(3)最后由主语言的编译程序将整个源程序编译编译成目标码.2.2.处理过程处理过程目前采用较多的是目前采用较多的是预编译方法预编译方法,其处理过程是:,其处理过程是:)88.1.18.1.1嵌入式嵌入式SQLSQL的处理过程的处理过程3.3.区分嵌入式区分嵌入式SQLSQL语句与主语言语句语句与主语言语句:前缀前缀:EXECSQLEXECSQL结束标志结束标志:随主语言的不同而不同在C语言中嵌入SQL语句形式:EXECSQL>;;例:EXECSQLDROPTABLEStudent;)98.1.18.1.1嵌入式嵌入式SQLSQL的处理过程的处理过程在COBOL语言中嵌入SQL语句:EXECSQL>END-EXECEND-EXEC例:EXECSQLDROPTABLEStudentEND-EXEC)108.18.1嵌入式嵌入式SQLSQL8.1.1嵌入式SQL的处理过程8.1.2嵌入式SQL与主语言之间通信8.1.3不用游标的SQL语句8.1.4使用游标的SQL语句8.1.5动态SQL简介8.1.1嵌入式SQL的处理过程8.1.2嵌入式SQL与主语言之间通信8.1.3不用游标的SQL语句8.1.4使用游标的SQL语句8.1.5动态SQL简介)118.1.28.1.2嵌入式嵌入式SQLSQL语句与主语言之间的通语句与主语言之间的通信信将SQL嵌入到高级语言中混合编程,程序中会含有两种不同计算模型的语句:SQLSQL语句语句描述性的面向集合的语句负责操纵数据库操纵数据库高级语言语句高级语言语句过程性的面向记录的语句负责控制程序流程控制程序流程)128.1.28.1.2嵌入式嵌入式SQLSQL语句与主语言之间的通语句与主语言之间的通信信•工作单元之间的通信方式工作单元之间的通信方式(1)SQL(1)SQL通信区通信区向主语言传递SQL语句的执行状态信息主语言能够根据此信息控制程序流程(2)(2)主变量主变量主语言向SQL语句提供参数将SQL语句查询数据库的结果交主语言进一步处理(3)(3)游标游标解决集合性操作语言与过程性操作语言不匹配)131.SQL1.SQL通信区通信区(1)SQLCA(1)SQLCA是SQLCommunicationArea的缩写SQLCA是一个数据结构。SQLCA的用途SQL语句执行后,RDBMS反馈给应用程序信息描述系统当前工作状态描述运行环境这些信息将送到SQL通信区SQLCA中应用程序从SQLCA中取出这些状态信息,据此决定接下来执行的语句)141.SQL1.SQL通信区通信区(2)SQLCA(2)SQLCA的使用方法的使用方法定义SQLCA语句格式:EXECSQLINCLUDESQLCA)151.SQL1.SQL通信区通信区使用SQLCASQLCA中有一个变量SQLCODE,存放每次执行SQL语句后的返回值;如果SQLCODE返回0(即常量SUCCESS),则表示SQL语句成功,否则表示出错。应用程序每执行完...