嵌入式SQLSQL包括交互式和嵌入式
交互式:SQL语言可以独立使用,以命令形式进行人机交互,也可以写或命令文件。这种使用方式的问题是:缺乏数据处理能力。(SQL语言的特点决定)
嵌入式:为获得数据处理能力,将SQL嵌入某种程序设计语言中(比如嵌入c中)
宿主语言
SQL负责操作数据库。
主语言负责处理数据。
优点——是目前SQL使用的主要方式。
一种相对的就是直接扩展SQL,称自含系统,有操作数据库,又可以处理数据,不过不好用。
而嵌入式可以直接使用预编译器。。。
调用的过程由预编译器提供。
嵌入式SQL应解决下述问题:
1、将嵌有SQL语言的宿主语言程序编译成可执行代码。
2、宿主语言与DBMS之间如何传递数据和消息。
3、数据库数据查询语言是面向集合的语言,查询结果一般是元组的集合。宿主语言只能一个一个记录处理数据却有一个数据方式的不一致问题,即要解决数据的暂存与处理间的读取方法问题。。
4、两者有时数据类型不完全对应等价,须作出处理、转换。要做什么,应如何做,据宿主语言和DBMS具体情况而定。
DBMS处理嵌入SQL时,不同宿主语言,所用基本方法一样。只是由于宿主语言差异须利用各自特点,解决各自特殊问题。
以C为例说明实现方法。
二、嵌入式SQL的说明部分
1、说明部分为便于与c语言,SQL语句前加EXEC SQL结尾用‘;’。
2、宿主变量
宿主变量是SQL中可引用的c语言变量。
说明时用EXEC SQL开头的说明语句。在SQL中引用宿主变量时,为与数据库本身变量区别宿主变量前加‘:’,故它可以与数据库本身变量(如列)名同名。
宿主变量在主语言中引用时与主语言一般变量一样使用,不加‘:’。