2022年嵌入式SQL .pdf
《2022年嵌入式SQL .pdf》由会员分享,可在线阅读,更多相关《2022年嵌入式SQL .pdf(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 嵌入式 SQL 嵌入式 SQL 语言把 SQL 语言嵌入到某种高级语言中使用,利用高级语言的过程性结构来弥补 SQL 语言实现复杂应用方面的不足。这种方式下使用的SQL 语言称为嵌入式SQL(Embedded SQL ),而嵌入 SQL 的高级语言称为主语言或宿主语言。11 嵌入式 SQL 的一般形式对宿主型数据库语言SQL ,DBMS 可采用两种方法处理, 一种是预编译, 另一种是修改和扩充主语言使之能处理SQL 语句。目前采用较多的是预编译的方法。即由DBMS 的预处理程序对源程序进行扫描, 识别出 SQL 语句。把它们转换成主语言调用语句,以使主语言编译程序能识别它,最后由主语言的编
2、译程序将整个源程序编译成目标码。在嵌入式 SQL 中,为了能够区分SQL 语句与主语言语句,所有SQL 语句都必须加前缀 EXEC SQL. 。SQL 语句的结束标志则随主语言的不同而不同。例如在 PL/1 和 C 中以分号(;)结束;EXEC SQL ;在 COBOL 中以 END-EXEC 结束;EXEC SQL END-EXEC 例如 一条交互形式的 SQL 语句: DROP TABLE Student ;嵌入到 C 程序中,应写成:EXEC SQL DROP TABLE Student ;嵌入 SQL 语句根据其作用的不同, 可分为 可执行语句 和说明性语句 两种。可执行语句又分为数据
3、定义 ,数据控制 ,数据操纵 三种。在宿主程序中,任何允许出现可执行的高级语言语句的地方,都可以写可执行 SQL 语句 ;任何允许出现说明型高级语言语句的地方,都可以写说明性SQL 语句。12 嵌入式 SQL 语句与主语言之间的通信将 SQL 嵌入到高级语言中混合编程,SQL 语句负责操纵数据库, 高级语言语句负责控制程序流程。这时程序中会含有两种不同计算模型的语句,一种是描述性的面向集合的SQL 语句,一种是过程性的高级语言语句,它们之间应该如何通信呢?数据库工作单元与源程序工作单元之间的通信主要包括:(1) 向主语言传递SQL 语句的执行状态信息,使主语言能够据此信息控制程序流程,主要用
4、SQL 通信区 (SQL Communication Area ,简称 SQLCA) 实现;(2) 主语言向 SQL 语句提供参数,主要用主变量实现;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 9 页 - - - - - - - - - 2 (3) 将 SQL 语句查询数据库的结果交主语言进一步处理,主要用主变量和游标 (Cursor )实现。一 SQL 通信区SQL 语句执行后,系统要反馈给应用程序若干信息,主要包括描述系统当前工作状态和运行环境的各种数据。这些信息
5、将送到SQL 通信区 SQLCA 种。应用程序从 SQLCA 中取出这些状态信息,据此决定接下来执行的语句。SQLCA 是一个数据结构,在应用程序中用EXEC SQL INCLUDE SQLCA 加以定义。 SQLCA 中有一个存放每次执行SQL 语句后返回代码的变量SQLCODE. 。应用程序每执行完一条 SQL 语句之后都应该测试一下SQLCODE的值,以了解 SQL 语句执行情况并作相应处理。 如果 SQLCODE等于预定义的常量SUCCESS ,则表示 SQL 语句成功,否则在 SQLCODE中存放错误代码。例如,在执行删除语句DELETE后,不同的执行情况SQLCA 中有下列不同的信
6、息:成功删除,并有删除的行数(SQLCODE = SUCCESS)无条件删除警告信息违反数据保护规则,拒绝操作没有满足条件的行,一行也没有删除由于各种原因,执行出错二 主变量嵌入式 SQL 语句中可以使用主语言的程序变量来输入或输出数据。我们把SQL 语句中使用的主语言程序变量简称为主变量 。主变量根据其作用的不同,分为输入主变量 和输出主变量 。输入主变量由应用程序对其赋值, SQL 语句引用;输出主变量由SQL 语句对其赋值或设置状态信息,返回给应用程序。一个主变量有可能既是输入主变量又是输出主变量。利用输入主变量,可以指定向数据库中插入的数据,可以将数据库中的数据修改为指定值,可以指定执
7、行的操作,可以指定 WHERE 子句或 HAVING子句中的条件。利用输出主变量,可以得到SQL 语句的结果数据和状态。所有主变量和指示变量(指示变量是一个整形变量,用来“指示“所指主变量的值或条件 ) 必 须 在 SQL语句 BEGIN DECLARE SECTION与 END DECLARESECTION之间进行说明。 说明之后,主变量可以在 SQL 语句中任何一个能够使用表达式的地方出现,为了与数据库对象名(表名,视图名,列名等)区别,SQL 语句中的主变量名前要加冒号(:)作为标志。同样, SQL 语句中的指示变量前也必须加冒号,并且要紧跟在所指主变量之后。 而在 SQL 语句之外,主
8、变量和指示变量均可以直接引用,不必加冒号。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 9 页 - - - - - - - - - 3 三游标SQL 语言与主语言具有不同的数据处理方式。SQL 语言是面向集合的, 一条 SQL 语句原则上可以产生或处理多条纪录。而主语言是面向纪录的,一组主变量一次只能存放一条纪录。所以仅使用主变量并不能完全满足SQL 语句向应用程序输出数据的要求,为此嵌入式SQL 引入了游标的概念,用游标来协调这两种不同的处理方式。游标是系统为用户可设
9、的一个数据缓冲区, 存放 SQL 语句的执行结果, 每个游标区都有一个名字。 用户可以通过游标逐一获取纪录。并赋给主变量,交由主语言进一步处理。EXEC SQL INCLUDE SQLCA END-EXEC. 定义 SQL 通信区01 ORA-WORKING-ITEMS. EXEC SQL BEGIN DECLARE SECTION END- EXEC .主变量说明开始05 ORA-USER PIC X(01) VALUE /. 05 TBL-WSGTMMPE. EXEC SQL INCLUDE WSGTMMPE.cpy END-EXEC. 05 S-WSGP83I. EXEC SQL INC
10、LUDE WSGQP83I.cpy END-EXEC. 05 KEY-SEC-CODE. 10 KEY-SEC-CODE1 PIC X(04). 10 KEY-SEC-CODE2 PIC X(01). 05 KEY-SEC-CD PIC X(14). EXEC SQL END DECLARE SECTION END- EXEC. .主变量说明结束EXEC SQL DECLARE SEL_PLACE CURSOR FOR S END-EXEC. 游标操作(定义游标)EXEC SQL OPEN SEL_PLACE END-EXEC. 游标操作(打开游标)EXEC SQL FETCH SEL_PLA
11、CE INTO . 游标操作(推进游标指针并将当前数据放入主变量)EXEC SQL CLOSE SEL_PLACEEND-EXEC. 游标操作(关闭游标 ) 13 不用游标的 SQL 语句名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 9 页 - - - - - - - - - 4 不用游标的 SQL 语句有:说明性语句数据定义语句数据控制语句查询结果为单纪录的SELECT语句非 CURRENT 形式的 UPDATE 语句非 CURRENT 形式的 DELETE 语句IN
12、SERT语句所有的说明性语句及数据定义与控制语句都不需要使用游标。它们是嵌入式 SQL 中最简单的一类语句,不需要返回结果数据,也不需要使用主变量。在主语言中嵌入说明性语句及数据定义与控制语句,只要给语句加上前缀EXEC SQL 和语句结束符即可。INSERT语句也不需要使用游标,但通常需要使用主变量。SELECT语句, UPDATE语句, DELETE 语句则要复杂些。一说明性语句说明性语句是专为在嵌入SQL 中说明主变量等而设置的,主要有两条语句:EXEC SQL BEGIN DECLARE SECTION ; 和EXEC SQL END DECLARE SECTION ; 两条语句必须配
13、对出现,相当于一个括号,两条语句中间是主变量的说明。二数据定义语句例 1 建立一个 ” 学生 ” 表 Student. EXEC SQL CREATE TABLE Student ( Sno CHAR(5) NOT NULL UNIQUE, Sname CHAR(20), Ssex CHAR(1) Sage INT, Sdept CHAR(15); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 9 页 - - - - - - - - - 5 EXEC SQL DROP
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年嵌入式SQL 2022 嵌入式 SQL
限制150内