嵌入式SQL语言imp

2019-04-22 08:33

第六章 嵌入式SQL(E-SQL)简介 ................................................................................................... 3 第一节 什么是嵌入SQL语言? ....................................................................................................... 3 1.1 嵌入SQL程序的组成元素 ...................................................................................................... 3 1.2 什么是静态SQL和动态SQL? ................................................................................................ 4 1.3 什么是SQLCA?...................................................................................................................... 4 1.4 什么是SQLDA? ....................................................................................................................... 5 第二节 SYBASE SQL SERVER嵌入式SQL语言 ............................................................................ 5 2.1 一个嵌入SQL语言的简单例子 .............................................................................................. 5 2.2 嵌入SQL的处理过程 .............................................................................................................. 6 2.3 嵌入SQL语句总览 .................................................................................................................. 7 2.3.1 宿主变量 ................................................................................................................................ 7 2.3.2 连接数据库 .......................................................................................................................... 12 2.3.3 数据的查询和修改 .............................................................................................................. 13 2.3.4 游标的使用 .......................................................................................................................... 13 2.3.5 SQLCA .................................................................................................................................. 15 2.3.6 WHENEVER .......................................................................................................................... 16 2.3.7 批处理 .................................................................................................................................. 18 2.3.8 事务 ...................................................................................................................................... 18 2.4动态SQL语句 ......................................................................................................................... 18 2.4 .1 动态修改 ............................................................................................................................. 19 2.4.2 动态游标 .............................................................................................................................. 20 2.4.3 SQLDA .................................................................................................................................. 23 2.4.4 DESCRIBE语句 ................................................................................................................... 26 2.5 两个例子程序 ......................................................................................................................... 27 2.5.1 TELECOM程序 .................................................................................................................... 27 2.5.2 ADHOC程序 ........................................................................................................................ 29 第三节 IBM DB2嵌入SQL语言 .................................................................................................... 35 3.1 一个简单示例 ......................................................................................................................... 35 3.2 嵌入SQL语句 ........................................................................................................................ 37 3.2.1宿主变量 ............................................................................................................................... 37 3.2.2单行查询 ............................................................................................................................... 38 3.2.3多行查询 ............................................................................................................................... 39 3.2.4插入、删除和修改操作 ....................................................................................................... 40 3.2.5 SQLCA .................................................................................................................................. 43 3.2.6事务 ....................................................................................................................................... 45 3.3 DB2的嵌入SQL程序处理过程............................................................................................. 46 3.4 DB2的动态SQL嵌入语句 .................................................................................................... 53 3.4.1 基本方法 .............................................................................................................................. 53 3.4.2 动态游标 .............................................................................................................................. 55 3.4.3 SQLDA .................................................................................................................................. 55 第四节 ORACLE数据库的嵌入SQL语言 .................................................................................... 66 4.1 基本的SQL语句 .................................................................................................................... 66 4.1.1宿主变量和指示符 ............................................................................................................... 66 4.1.2 查询 ...................................................................................................................................... 68

1

4.1.3 修改数据 .............................................................................................................................. 68 4.1.4 游标 ...................................................................................................................................... 68 4.2 嵌入PL/SQL ........................................................................................................................... 71 4.3 动态SQL语句 ........................................................................................................................ 72 4.3.1 ORACLE动态SQL语句的一些特点 .................................................................................. 72 4.3.2 使用动态SQL的四种方法 ................................................................................................. 72 4.3.3 SQLDA .................................................................................................................................. 75 第五节INFORMIX的嵌入SQL/C语言 ......................................................................................... 89 5.1 一个简单的入门例子 ............................................................................................................. 89 5.2 宿主变量 ................................................................................................................................. 91 5.3 嵌入SQL的处理过程 ............................................................................................................ 96 5.4 动态SQL语言 ........................................................................................................................ 96 5.4.1 SQLDA .................................................................................................................................. 97 第六节MICROSOFT SQL SERVER7嵌入式SQL语言 .................................................................... 105 6.1 一个嵌入SQL语言的简单例子 .......................................................................................... 105 6.2 嵌入SQL的处理过程 .......................................................................................................... 106 6.3 嵌入SQL语句 ...................................................................................................................... 112 6.3.1 声明嵌入SQL语句中使用的C变量 .............................................................................. 112 6.3.2 连接数据库 ........................................................................................................................ 115 6.3.3 数据的查询和修改 ............................................................................................................ 115 6.3.4 游标的使用 ........................................................................................................................ 116 6.3.5 SQLCA ................................................................................................................................ 117 6.3.6 WHENEVER ........................................................................................................................ 118 6.4动态SQL语句 ....................................................................................................................... 119 6.4 .1 动态修改 ........................................................................................................................... 119 6.4.2 动态游标 ............................................................................................................................ 120 6.4.3 SQLDA ................................................................................................................................ 122 6.4.4 DESCRIBE语句 ................................................................................................................. 130 6.5 API ......................................................................................................................................... 130

2

第六章 嵌入式SQL(E-SQL)简介

第一节 什么是嵌入SQL语言?

SQL是一种双重式语言,它既是一种用于查询和更新的交互式数据库语言,又是一种应用程序进行数据库访问时所采取的编程式数据库语言。SQL语言在这两种方式中的大部分语法是相同的。在编写访问数据库的程序时,必须从普通的编程语言开始(如C语言),再把SQL加入到程序中。所以,嵌入式SQL语言就是将SQL语句直接嵌入到程序的源代码中,与其他程序设计语言语句混合。专用的SQL预编译程序将嵌入的SQL语句转换为能被程序设计语言(如C语言)的编译器识别的函数调用。然后,C编译器编译源代码为可执行程序。

各个数据库厂商都采用嵌入SQL语言,并且都符合ANSI/ISO的标准。所以,如果采用合适的嵌入SQL语言,那么可以使得你的程序能够在各个数据库平台上执行(即:源程序不用做修改,只需要用相应数据库产品的预编译器编译即可)。当然,每个数据库厂商又扩展了ANSI/ISO的标准,提供了一些附加的功能。这样,也使得每个数据库产品在嵌入SQL方面有一些区别。本章的目标是,对所有的数据库产品的嵌入SQL做一个简单、实用的介绍。

当然,嵌入SQL语句完成的功能也可以通过应用程序接口(API)实现。通过API的调用,可以将SQL语句传递到DBMS,并用API调用返回查询结果。这个方法不需要专用的预编译程序。

1.1 嵌入SQL程序的组成元素

我们以IBM的DB2嵌入SQL为例,来看看嵌入SQL语句的组成元素。

例1、连接到SAMPLE数据库,查询LASTNAME为JOHNSON的FIRSTNAME信息。 #include #include #include #include \#include

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

3

WHERE LASTNAME = 'JOHNSON';(4) printf( \ 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语句。这也是告诉预编译器在EXEC SQL和“;”之间是嵌入SQL语句。如果一条嵌入式SQL语句占用多行,在C程序中可以用续行符“\\”。

1.2 什么是静态SQL和动态SQL?

嵌入SQL语言,分为静态SQL语言和动态语言两类。静态SQL语言,就是在编译时已经确定了引用的表和列。宿主变量不改变表和列信息。可以使用主变量改变查询参数值,但是不能用主变量代替表名或列名。

动态SQL语言就是:不在编译时确定SQL的表和列,而是让程序在运行时提供,并将SQL语句文本传给DBMS执行。静态SQL语句在编译时已经生成执行计划。而动态SQL语句,只有在执行时才产生执行计划。动态SQL语句首先执行PREPARE语句要求DBMS分析、确认和优化语句,并为其生成执行计划。DBMS还设置SQLCODE以表明语句中发现的错误。当程序执行完“PREPARE”语句后,就可以用EXECUTE语句执行执行计划,并设置SQLCODE,以表明完成状态。

1.3 什么是SQLCA?

应用程序执行时,每执行一条SQL语句,就返回一个状态符和一些附加信息。这些信息反映了SQL语句的执行情况,它有助于用户分析应用程序的错误所在。这些信息都存放在sqlca.h的sqlca结构中。如果一个源文件中包含SQL语句,则必须要在源程序中定义一个SQLCA结构,而且名为SQLCA。最简单的定义方法是在源文件中加入一些语句:EXEC SQL INCLUDE sqlca.h。每个数据库产品都提供了SQLCA结构。

4

1.4 什么是SQLDA?

我们知道,动态SQL语句在编译时可能不知道有多少列信息。在嵌入SQL语句中,这些不确定的数据是通过SQLDA完成的。SQLDA的结构非常灵活,在该结构的固定部分,指明了多少列等信息,在该结构的后面有一个可变长的结构,说明每列的信息。在从数据库获得数据时,就可以采用SQLDA来获得每行的数据。各个数据库产品的SQLDA结构都不完全相同。

第二节 SYBASE SQL Server嵌入式SQL语言

2.1 一个嵌入SQL语言的简单例子

我们首先来看一个简单的嵌入式SQL语言的程序(C语言):用sa(口令为password)连接数据库服务器,并将所有书的价格增加10%。这个例子程序如下: 例1、

/*建立通讯区域*/ Exec sql include sqlca; main() {

/*声明宿主变量*/

EXEC SQL BEGIN DECLARE SECTION; char user[30],passwd[30];

EXEC SQL END DECLARE SECTION; /*错误处理*/

EXEC SQL WHENEVER SQLERROR CALL err_p(); /*连接到SQL SERVER服务器*/

printf(\gets(user);

printf(\gets(passwd);

exec sql connect :user identified by :passwd; exec sql use pubs2;

EXEC SQL update titles set price=price*1.10; EXEC SQL commit work; /*断开数据库服务器的连接*/ Exec sql disconnect all; return (0); }

/*错误处理程序*/ err_p() {

5


嵌入式SQL语言imp.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:苏教版六年级语文上册一课一练(整理)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: