展了 ANSI/ISO 的标准,提供了一些附加的功能。这样,也使得每个数据库产品在嵌入
SQL 方面有一些区别。本章的目标是,对所有的数据库产品的嵌入 SQL 做一个简单、实用
的介绍。
当然,嵌入 SQL 语句完成的功能也可以通过应用程序接口(API)实现。通过 API 的调
用,可以将 SQL 语句传递到 DBMS,并用 API 调用返回查询结果。这个方法不需要专用的
预编译程序。
1.1 嵌入 SQL 程序的组成元素
我们以 IBM 的 DB2 嵌入 SQL 为例,来看看嵌入 SQL 语句的组成元素。
例 1、连接到 SAMPLE 数据库,查询 LASTNAME 为 JOHNSON 的 FIRSTNAME 信息。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "util.h"
#include <sqlca.h>
EXEC SQL INCLUDE SQLCA; (1)
main()
{
EXEC SQL BEGIN DECLARE SECTION; (2)
char firstname[13];
char userid[9];
char passwd[19];
EXEC SQL END DECLARE SECTION;
EXEC SQL CONNECT TO sample; (3)
EXEC SQL SELECT FIRSTNME INTO :firstname (4)
FROM employee
WHERE LASTNAME = 'JOHNSON';(4)
printf( "First name = %s\n", firstname );
EXEC SQL CONNECT RESET; (5)
return 0;
}
上面是一个简单的静态嵌入 SQL 语句的应用程序。它包括了嵌入 SQL 的主要部分:
(1)中的 include SQLCA 语句定义并描述了 SQLCA 的结构。SQLCA 用于应用程序和数据
库之间的通讯,其中的 SQLCODE 返回 SQL 语句执行后的结果状态。
(2)在 BEGIN DECLARE SECTION 和 END DECLARE SECTION 之间定义了宿主变量。
宿主变量可被 SQL 语句引用,也可以被 C 语言语句引用。它用于将程序中的数据通过 SQL
语句传给数据库管理器,或从数据库管理器接收查询的结果。在 SQL 语句中,主变量前均
有“:”标志以示区别。
(3)在每次访问数据库之前必须做 CONNECT 操作,以连接到某一个数据库上。这时,
应该保证数据库实例已经启动。
(4)是一条选择语句。它将表 employee 中的 LASTNAME 为“JOHNSON”的行数据的
FIRSTNAME 查出,并将它放在 firstname 变量中。该语句返回一个结果。可以通过游标返
回多个结果。当然,也可以包含 update、insert 和 delete 语句。
(5)最后断开数据库的连接。
从上例看出,每条嵌入式 SQL 语句都用 EXEC SQL 开始,表明它是一条 SQL 语句。这也
评论0
最新资源