3.05-6 Embedded SQL (嵌入式sQL) Introduction to embedded SQL SQL:1 interaction SQL(交互式SQL) 2 embedded SQL(嵌入式SQL) interaction SQL:SQL语言可以独立使用, 以命令形式进行人机交互,也可以写或命 令文件。这种使用方式的问题是:缺乏数 据处理能力
3.05-6 Embedded SQL ( 嵌入式SQL) Introduction to embedded SQL SQL: 1 interaction SQL(交互式SQL) 2 embedded SQL(嵌入式SQL) interaction SQL:SQL语言可以独立使用, 以命令形式进行人机交互,也可以写或命 令文件。这种使用方式的问题是:缺乏数 据处理能力
embedded SQL:为获得数据处理能力,将SQL 嵌入某种程序设计语言中: 嵌入于的主程序设计语言叫宿主语言 host l anguage SQL负责操作数据库。 。主语言负责处理数据。 ●优点: 用户角度看: 系统开发角度看: 是目前$QL使用的主要方式
embedded SQL:为获得数据处理能力,将SQL 嵌入某种程序设计语言中: ⚫ 嵌入于的主程序设计语言叫宿主语言 host language ⚫ SQL负责操作数据库。 ⚫ 主语言负责处理数据。 ⚫ 优点: 用户角度看: 系统开发角度看: ——是目前SQL使用的主要方式
嵌入式SQL应解决下述问题: 1将嵌有$QL语言的宿主语言程序编译成可执行 代码。 2.宿主语言与DBMS之间如何传递数据和消息。 3.数据库数据查询语言是面向集合的语言,查 询结果一般是元组的集合。宿主语言只能一 个一个记录处理数据故有一个数据处理方式 的不一致问题,即要解决数据的暂存与处理 间的读取方法问题
嵌入式SQL应解决下述问题: 1 将嵌有SQL语言的宿主语言程序编译成可执行 代码。 2.宿主语言与DBMS之间如何传递数据和消息。 3.数据库数据查询语言是面向集合的语言,查 询结果一般是元组的集合。宿主语言只能一 个一个记录处理数据故有一个数据处理方式 的不一致问题,即要解决数据的暂存与处理 间的读取方法问题
4.两者有时数据类型不完全对应等价,须作 出处理、转换。要做什么,应如何做,据 宿主语言和DBMS具体情况而定。 DBMS处理嵌入SQL时,不同宿主 语言,所用基本方法一样。只是由于宿主 语言差异须利用各自特点,解决各自特殊 问题。以C为例说明实现方法
4.两者有时数据类型不完全对应等价,须作 出处理、转换。要做什么,应如何做,据 宿主语言和DBMS具体情况而定。 DBMS处理嵌入SQL时,不同宿主 语言,所用基本方法一样。只是由于宿主 语言差异须利用各自特点,解决各自特殊 问题。以C为例说明实现方法
-Declare Section of embedded SQL (嵌入式$QL的说明部分) 1.说明部分为便于与C语言区别,SQL语句前加EXEC $QL结尾用‘’。 2.宿主变量(host variable): ●宿主变量是$QL中可引用的C语言变量。 说明时用EXEC SQL开头的说明语句。 在SQL中引用host variablel时,为与数据库本身变量 区别宿主变量前加‘:’,故它可以与数据库本身变 量(如列)名同名。 宿主变量在主语言中引用时与主语言一般变量一样 使用,不加‘:’
二 Declare Section of embedded SQL (嵌入式SQL的说明部分) 1.说明部分为便于与C语言区别,SQL语句前加EXEC SQL 结尾用‘ ; ’ 。 2.宿主变量(host variable): ⚫ 宿主变量是SQL中可引用的C语言变量。 ⚫ 说明时用EXEC SQL开头的说明语句。 ⚫ 在SQL中引用host variable时,为与数据库本身变量 区别宿主变量前加‘ : ’ ,故它可以与数据库本身变 量(如列)名同名。 ⚫ 宿主变量在主语言中引用时与主语言一般变量一样 使用,不加‘ : ’
● 宿主变量的类型定义时按主语言类型及 格式定义(它就是一个主语言变量)。 ● 宿主语言与数据库类型不一致时,可按约 定由DBMS做出转换。 0 实现时往往对宿主语言数据类型加以限 制。如C语言不准用户将宿主变量定义为 数组或结构类型
⚫ 宿主变量的类型定义时按主语言类型及 格式定义(它就是一个主语言变量)。 ⚫ 宿主语言与数据库类型不一致时,可按约 定由DBMS做出转换。 ⚫ 实现时往往对宿主语言数据类型加以限 制。如C语言不准用户将宿主变量定义为 数组或结构类型
SQLCA: (SQL commun i cation Area, 指SQL通信区) 它是一个全局变量,由系统定义,供应 用程序与DBMS之间通信用。 ●1 使用前只需在嵌入的可执行$QL语句前加 I NCLUDE语句,不必用户说明, 。格式如下: EXEC SQL INCLUDE SQLCA:
SQLCA: (SQL communication Area, 指SQL通信区) ⚫ 它是一个全局变量,由系统定义,供应 用程序与DBMS之间通信用。 ⚫ 使用前只需在嵌入的可执行SQL语句前加 INCLUDE语句,不必用户说明. ⚫ 格式如下: EXEC SQL INCLUDE SQLCA;
SQLCA中有一系列分量,供DBMS与应用程序之间传消 息或标识QL语句执行状态,以SQLCA中的一个分量 SQLC0DE为例: 它是一个整形数,供DBMS向应用程序报告SQL 语句执行情况:每条SQL语句执行后DBMS都返回一个 SQLC0DE代码, 一般: 0: 正常执行完毕。 正数:已执行,但有异常,如等于100时为无数 可取,表示可能: 1.数据库中无满足条件的数据。 2.被查询数据已被取完。 负数:因出错未执行,具体值表示错误类型
⚫ SQLCA中有一系列分量,供DBMS与应用程序之间传消 息或标识SQL语句执行状态,以SQLCA中的一个分量 SQLCODE为例: 它是一个整形数,供DBMS向应用程序报告SQL 语句执行情况:每条SQL语句执行后DBMS都返回一个 SQLCODE代码, 一般: O: 正常执行完毕。 正数:已执行,但有异常,如等于100时为无数 可取,表示可能: 1.数据库中无满足条件的数据。 2.被查询数据已被取完。 负数:因出错未执行,具体值表示错误类型
指示变量(indicator): ● 宿主变量不能直接接受空缺符(NULL),凡所 取值可为缺省空时,宿主变量后应跟一指示变 量。 ○指示变量也是宿主变量,短整数: 为负表示宿主变量值为空缺值(NULL) 否则,不是NULL
指示变量(indicator): ⚫ 宿主变量不能直接接受空缺符(NULL),凡所 取值可为缺省空时,宿主变量后应跟一指示变 量。 ⚫ 指示变量也是宿主变量,短整数: 为负表示宿主变量值为空缺值(NULL), 否则,不是NULL
所有$QL语言用到的宿主变量,除系统定的 外,都需说明.格式如下: 开头行: EXEC SQL BEGIN DECLARE SECTION; 结束行为: EXEC SQL END DECLARE SECTION: 中间为宿主变量类型说明部分,与C语言 样了
所有SQL语言用到的宿主变量,除系统定的 外,都需说明.格式如下: ⚫ 开头行: EXEC SQL BEGIN DECLARE SECTION; ⚫ 结束行为: EXEC SQL END DECLARE SECTION; 中间为宿主变量类型说明部分,与C语言一 样了