一、 ESQL/C 资料(完全版)一
第一节 什么是嵌入 语言?
嵌入 程序的组成元素
什么是静态 和动态
什么是 ?
什么是
第二节 嵌入式 语言
一个嵌入 语言的简单例子
嵌入 的处理过程
嵌入 语句总览
宿主变量
连接数据库
数据的查询和修改
游标的使用
批处理
事务
动态 语句
动态修改
动态游标
语句
两个例子程序
程序
程序
第三节 嵌入 语言
一个简单示例
嵌入 语句
宿主变量
单行查询
多行查询
插入、删除和修改操作
事务
的嵌入 程序处理过程
的动态 嵌入语句
基本方法
动态游标
第四节 数据库的嵌入 语言
基本的 语句
宿主变量和指示符
查询
修改数据
游标
嵌入 !
动态 语句
动态 语句的一些特点
使用动态 的四种方法
第五节 "# 的嵌入 ! 语言
一个简单的入门例子
宿主变量
嵌入 的处理过程
动态 语言
第六节 " 嵌入式 语言
一个嵌入 语言的简单例子
嵌入 的处理过程
嵌入 语句
声明嵌入 语句中使用的 变量
连接数据库
数据的查询和修改
游标的使用
动态 语句
动态修改
动态游标
语句
第六章 嵌入式 ($)简介
一.1 第一节 什么是嵌入 SQL 语言?
是一种双重式语言,它既是一种用于查询和更新的交互式数据库语言,又是一种
应用程序进行数据库访问时所采取的编程式数据库语言。 语言在这两种方式中的大部
分语法是相同的。在编写访问数据库的程序时,必须从普通的编程语言开始(如 语言),
再把 加入到程序中。所以,嵌入式 语言就是将 语句直接嵌入到程序的源代
码中,与其他程序设计语言语句混合。专用的 预编译程序将嵌入的 语句转换为
能被程序设计语言(如 语言)的编译器识别的函数调用。然后, 编译器编译源代码为
可执行程序。
各个数据库厂商都采用嵌入 语言,并且都符合 ! 的标准。所以,如果采
用合适的嵌入 语言,那么可以使得你的程序能够在各个数据库平台上执行(即:源程
序不用做修改,只需要用相应数据库产品的预编译器编译即可)。当然,每个数据库厂商
又扩展了 ! 的标准,提供了一些附加的功能。这样,也使得每个数据库产品在嵌
入 方面有一些区别。本章的目标是,对所有的数据库产品的嵌入 做一个简单、
实用的介绍。
当然,嵌入 语句完成的功能也可以通过应用程序接口( )实现。通过 的
调用,可以将 语句传递到 ,并用 调用返回查询结果。这个方法不需要专用
的预编译程序。
一.1.1 嵌入 SQL 程序的组成元素
我们以 的 嵌入 为例,来看看嵌入 语句的组成元素。
例 、连接到 数据库,查询 为 % 的 " 信息。
&'()*+,-./0,'123
&'()*+,-./0,*'423
&'()*+,-./05'(623
&'()*+,-7+0'*27
&'()*+,-./8*)923
#:;<=
>9'(<=
?
#@;<=
)295A5/0(9>-BC;
)295+/-5',BC;
)295D9//E,BC;
#;
#/9>D*-;<=
#"FA5/0(9>-<=
"->D*1G--
HI%I;<=
D5'(0J<7"'5/0(9>-HK/L(7MA5/0(9>-=;
#;<=
5-0+5(;
N
上面是一个简单的静态嵌入 语句的应用程序。它包括了嵌入 的主要部分:
()中的 '()*+,- 语句定义并描述了 的结构。 用于应
用程序和数据库之间的通讯,其中的 返回 语句执行后的结果状态。
()在 @ 和 之间定义了
宿主变量。宿主变量可被 语句引用,也可以被 语言语句引用。它用于将程序中
的数据通过 语句传给数据库管理器,或从数据库管理器接收查询的结果。在
语句中,主变量前均有“:”标志以示区别。
()在每次访问数据库之前必须做 操作,以连接到某一个数据库上。
这时,应该保证数据库实例已经启动。
()是一条选择语句。它将表 ->D*1G-- 中的 为“%O的行
数据的 " 查出,并将它放在 A5/0(9>- 变量中。该语句返回一个结果。可
以通过游标返回多个结果。当然,也可以包含 +D,90-、'(/-50 和 ,-*-0- 语句。
()最后断开数据库的连接。
从上例看出,每条嵌入式 语句都用 # 开始,表明它是一条 语句。
这也是告诉预编译器在 # 和“;”之间是嵌入 语句。如果一条嵌入式 语
句占用多行,在 程序中可以用续行符“LO。
一.1.2 什么是静态 SQL 和动态 SQL?
嵌入 语言,分为静态 语言和动态语言两类。静态 语言,就是在编译时
已经确定了引用的表和列。宿主变量不改变表和列信息。可以使用主变量改变查询参数值,
但是不能用主变量代替表名或列名。
动态 语言就是:不在编译时确定 的表和列,而是让程序在运行时提供,并
将 语句文本传给 执行。静态 语句在编译时已经生成执行计划。而动态
语句,只有在执行时才产生执行计划。动态 语句首先执行 语句要求
分析、确认和优化语句,并为其生成执行计划。 还设置 以表明语
句中发现的错误。当程序执行完“ O语句后,就可以用 #: 语句执行执行计
划,并设置 ,以表明完成状态。
一.1.3 什么是 SQLCA?
应用程序执行时,每执行一条 语句,就返回一个状态符和一些附加信息。这些信
息反映了 语句的执行情况,它有助于用户分析应用程序的错误所在。这些信息都存放
在 /8*)92 的 /8*)9 结构中。如果一个源文件中包含 语句,则必须要在源程序中定义
一个 结构,而且名为 。最简单的定义方法是在源文件中加入一些语句:
#:/8*)92。每个数据库产品都提供了 结构。
一.1.4 什么是 SQLDA?
我们知道,动态 语句在编译时可能不知道有多少列信息。在嵌入 语句中,
这些不确定的数据是通过 完成的。 的结构非常灵活,在该结构的固定部分,
指明了多少列等信息,在该结构的后面有一个可变长的结构,说明每列的信息。在从数据
库获得数据时,就可以采用 来获得每行的数据。各个数据库产品的 结构
都不完全相同。
一.2 第二节 SYBASE SQL Server 嵌入式 SQL 语言
一.2.1 一个嵌入 SQL 语言的简单例子
我们首先来看一个简单的嵌入式 语言的程序( 语言):用 /9(口令为
D9//E15,)连接数据库服务器,并将所有书的价格增加 K。这个例子程序如下:
例 、