嵌入式SQL开发
嵌入式sql是将sql语句嵌入到程序设计语言中,被嵌入的程序设计语言,如C、C++,JAVA,称为宿主语言,简称为主语言。
一:嵌入式sql如何转化为可识别的编译程序
二:格式
为了区分sql语句和主语言语句,所有的sql语句都要加上EXEC SQL
C:
EXEC SQL <SQL语句>;
三:通信控制
(1)向主语言传递SQL语句的执行状态信息,使主语言能够据此控制程序流程,主要用SQL通信区实现。
(2)主语言向SQL语句提供参数,主要用变量实现。
(3)将SQL语句查询数据库的结果交主语言处理,主要用主变量和游标实现。
以下分别介绍上述三种方法:
1. SQL通信区(SQLCA )
SQLCA 是一个数据结构,用途?
(1)SQL语句执行后,系统反馈给应用程序信息
描述系统当前工作状态
描述运行环境
(2)这些信息将送到SQL通信区中
(3)应用程序从SQL通信区中取出这些状态信息,据此决定接下来执行的语句
使用方法:
- 定义SQLCA
EXEC SQL INCLUDE SQLCA
- 使用SQLCA
1. SQL中有一个存放每次执行SQL语句后返回代码的变量 SQLCODE
2. 如果SQLCODE等于预定义的常量SUCCESS,表示语句成功!否则出错!
3。 应用程序每执行完一条SQL语句后都应该测试一下SQLCODE,以了解该SQL语句执行情况并做相应处理
2. 主变量和指示变量
1. 主变量:
(1). 嵌入式SQL语句中可以使用主语言的程序变量来输入或输出数据
(2). 在SQL语句中使用的与程序的变量简称为主变量
类型划分:
输入主变量:由应用程序对其赋值,SQL语句引用
输出主变量:由SQL语句对其赋值或设置状态信息,返回给应用程序
2. 指示变量:(理解为一种标志位)
(1)指示变量是一个整型变量,用来“指示”所指比主变量的值或条件
(2)一个主变量可以附带一个指示变量
用途:
1. 指示输入主变量是否为空值
2. 检测输出变量是否为空值,值是否被截断
3. 变量使用
定义方法:
EXEC SQL BEGAIN DECLARE SECTION
...
...
... (用来说明主变量和指示变量)
EXEC SQL END DECALRE SECTION
使用方法:
主变量:
1. 使用在任何一个能够使用表达式的SQL语句上
2. 变量名前加冒号(:)作为区分
指示变量:
1. 变量名前加冒号(:)作为区分
2. 紧跟所指主变量之后
注:SQL语句之外,随便用,不用加冒号
3. 游标的使用
为什么要使用游标?
什么是游标?
1. 游标是系统为用户开设的一个数据缓冲区,存放SQL的执行结果
2. 每个游标区的都有一个名字
3. 用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交给主语言进一步处理
不用游标的语句:
使用方法:
打开游标
EXEC SQL OPEN <游标名>
说明:1. 打开游标实际上是执行相应的SELECT语句,把查询结果取到缓冲区中
2. 这时游标处于活动状态,指标指向查询结果集中的第一条记录
使用FETCH语句推进游标的指针
EXEC SQL FETCH <游标名>
into <主变量>[<指示变量>]
[<主变量>[<指示变量>]]...;
功能:
指定方向推动游标指针,同时将缓冲区中的当前记录取出来送至主变量供主语言进一步处理
4. 动态SQL
主变量为SQL语句的内容,不是原来保存数据的输入或输出变量
SQL语句主变量在程序执行期间可以设定不同的SQL语句,然后立即执行
使用:
使用动态参数的步骤
(1)声明SQL语句主变量
(2)准备SQL语句(PREPARE)
EXEC SQL PREPARE<语句名>
from<SQL语句主变量>