资源描述
*,数据库原理及应用,数据库系统原理与开发,电子科技大学,-,陈安龙,6.6,嵌入式,SQL,编程,了解,SQL,与宿主语言的关系,理解嵌入式,SQL,的处理过程,理解嵌入式,SQL,与主语言之间的通信,掌握嵌入,SQL,的使用方式,【,本节的主要内容,】,一,、嵌入式,SQL,与宿主语言,(,1,),SQL,语言具有很强的查询处理能力,而逻辑表达的能力很弱,界面编程能力也很弱。,(,2,),如,JAVA,,,C/C+,等高级语言具有很强逻辑表达能力,能实现复杂的处理逻辑,同时具有较强的用户界面实现功能。,(,3,),为了使程序语言同时具有它的优点,在,JAVA,、,C/C+,等高级语言中嵌入,SQL,语句,称,高级语言为宿主语言,。,(,4,),由,DBMS,的预编译器扫描识别处理,SQL,语句,把,SQL,语句转换成主语言调用语句,以使主语言编译程序能识别它,最后由主语言的编译程序将整个源程序编译成目标码,然后连接(,Link,)处理生成装载模块。,二、嵌入式,SQL,的处理过程,(,1,),嵌入式,SQL,是一个语句级接口,通过程序访问的数据库模式必须在编写程序时已知,以便构造,SQL,语句。例如,程序员必须知道数据表名称、列名称及它的域。,(,2,),对于嵌入式,SQL,,,RDBMS,一般采用预编译方法处理,即由,RDBMS,的预处理程序对源程序进行扫描,识别出嵌入的,SQL,语句,把它们转换成主语言调用语句,以使主语言编译程序能识别它们,然后由主语言的编译程序将纯的主语言编译成目标码。,三、嵌入式,SQL,与主语言之间的通信,将,SQL,嵌入到高级语言中混合编程,,SQL,语句负责操纵数据库,高级语言语句负责控制流程。这时程序中会含有两种不同的计算模型的语句,从而需要二者之间建立通信。,数据库工作单元与源程序工作单元之间的通信,主要包括:,(,1,),向主语言传递,SQL,语句的执行状态信息,,使主语言能够根据此信息控制程序流程,主要用,SQL,通信区实现,(,2,),主语言向,SQL,语句提供参数,,主要用主变量实现,(,3,),将,SQL,语句查询数据库的结果传回主语言处理,,主要用主变量和游标实现,三、嵌入,SQL,的使用规定,(,1,),在程序中要区分,SQL,语句和宿主语言语句,在嵌入式,SQL,中,为了能够区分,SQL,语句与宿主语言语句,所有的,SQL,语句都必须加前缀标识“,EXEC SQL,”,,并以“,END_EXEC,”,作为语句的结束标志。嵌入式,SQL,语句的格式如:,EXEC SQL END_EXEC,结束标志在不同的宿主语言中可能是不同的,在,C,和,PASCAL,语言程序中规定结束标志为“;”,而不是“,END_EXEC”,。,三、嵌入式,SQL,的使用,规定(续),(,2,),SQL,的集合处理方式与宿主语言单记录处理方式之间的协调,由于,SQL,语句处理的是记录集合,而宿主语言语句一次只能处理一条记录,因此需要使用游标(,Cursor,)机制,把集合操作转换为单记录处理方式。与游标有关的,SQL,语句如下:,1,)游标定义语句(,DECLARE,),。游标是与某一查询结果相联系的符号名,游标用,SQL,的,DECLARE,语句定义,其格式如下:,EXEC SQL DECLARE CURSOR FOR,END EXEC,游标定义语句是一个说明语句,定义中的,SELECT,并不立即执行。,三、嵌入式,SQL,的使用,规定(,续,),2,)游标打开语句(,OPEN,),。该语句在执行游标定义中的,SELECT,语句,同时游标处于活动状态。游标是一个指针,此时指向查询结果的第一行之前。,OPEN,语句的格式如下:,EXEC SQL OPEN,END_EXEC,三、嵌入式,SQL,的使用,规定(,续,),3,)游标读取数据语句(,FETCH,),。此时游标推进一行,并把游标指向的行(即当前行)中的值取出并送到共享变量,其格式如下:,EXEC SQL FETCH FROM INTO ,END_EXEC,变量表由逗号分开的共享变量组成。,FETCH,语句通常置于宿主语言程序的循环结构中,并借助宿主语言的处理语句逐一处理查询结果中的每一个元组。,
展开阅读全文