第6讲 嵌入式SQL
- 格式:ppt
- 大小:175.00 KB
- 文档页数:38
嵌入式SQL嵌入式SQL语言把SQL语言嵌入到某种高级语言中使用,利用高级语言的过程性结构来弥补SQL语言实现复杂应用方面的不足。
这种方式下使用的SQL语言称为嵌入式SQL (Embedded SQL),而嵌入SQL的高级语言称为主语言或宿主语言。
1.1 嵌入式SQL的一般形式对宿主型数据库语言SQL,DBMS可采用两种方法处理,一种是预编译,另一种是修改和扩充主语言使之能处理SQL语句。
目前采用较多的是预编译的方法。
即由DBMS的预处理程序对源程序进行扫描,识别出SQL语句。
把它们转换成主语言调用语句,以使主语言编译程序能识别它,最后由主语言的编译程序将整个源程序编译成目标码。
在嵌入式SQL中,为了能够区分SQL语句与主语言语句,所有SQL语句都必须加前缀EXEC SQL.。
SQL语句的结束标志则随主语言的不同而不同。
例如在PL/1和C中以分号(;)结束;EXEC SQL <SQL 语句> ;在COBOL中以END-EXEC 结束;EXEC SQL < SQL 语句> END-EXEC例如一条交互形式的SQL语句:DROP TABLE Student ;嵌入到C程序中,应写成:EXEC SQL DROP TABLE Student ;嵌入SQL语句根据其作用的不同,可分为可执行语句和说明性语句两种。
可执行语句又分为数据定义,数据控制,数据操纵三种。
在宿主程序中,任何允许出现可执行的高级语言语句的地方,都可以写可执行SQL语句;任何允许出现说明型高级语言语句的地方,都可以写说明性SQL语句。
1.2 嵌入式SQL语句与主语言之间的通信将SQL嵌入到高级语言中混合编程,SQL语句负责操纵数据库,高级语言语句负责控制程序流程。
这时程序中会含有两种不同计算模型的语句,一种是描述性的面向集合的SQL语句,一种是过程性的高级语言语句,它们之间应该如何通信呢?数据库工作单元与源程序工作单元之间的通信主要包括:(1)向主语言传递SQL语句的执行状态信息,使主语言能够据此信息控制程序流程,主要用SQL通信区(SQL Communication Area ,简称SQLCA)实现;(2)主语言向SQL语句提供参数,主要用主变量实现;(3)将SQL语句查询数据库的结果交主语言进一步处理,主要用主变量和游标(Cursor)实现。
第六章嵌入式SQL(E-SQL)简介3第一节什么是嵌入SQL语言?31.1 嵌入SQL程序的组成元素31.2 什么是静态SQL和动态SQL?41.3 什么是SQLCA?41.4 什么是SQLDA?5第二节SYBASE SQL SERVER嵌入式SQL语言5 2.1 一个嵌入SQL语言的简单例子52.2 嵌入SQL的处理过程62.3 嵌入SQL语句总览72.3.1 宿主变量72.3.2 连接数据库122.3.3 数据的查询和修改132.3.4 游标的使用132.3.5 SQLCA152.3.6 WHENEVER162.3.7 批处理182.3.8 事务182.4动态SQL语句182.4 .1 动态修改192.4.2 动态游标202.4.3 SQLDA232.4.4 DESCRIBE语句272.5 两个例子程序272.5.1 TELECOM程序272.5.2 ADHOC程序29第三节 IBM DB2嵌入SQL语言353.1 一个简单示例353.2 嵌入SQL语句373.2.1宿主变量373.2.2单行查询393.2.3多行查询393.2.4插入、删除和修改操作403.2.5 SQLCA433.2.6事务453.3 DB2的嵌入SQL程序处理过程463.4 DB2的动态SQL嵌入语句533.4.1 基本方法533.4.2 动态游标553.4.3 SQLDA55第四节 ORACLE数据库的嵌入SQL语言664.1 基本的SQL语句664.1.1宿主变量和指示符664.1.2 查询684.1.3 修改数据684.1.4 游标684.2 嵌入PL/SQL714.3 动态SQL语句724.3.1 ORACLE动态SQL语句的一些特点724.3.2 使用动态SQL的四种方法724.3.3 SQLDA75第五节INFORMIX的嵌入SQL/C语言895.1 一个简单的入门例子895.2 宿主变量915.3 嵌入SQL的处理过程965.4 动态SQL语言965.4.1 SQLDA97第六节MICROSOFT SQL SERVER7嵌入式SQL语言105 6.1 一个嵌入SQL语言的简单例子1056.2 嵌入SQL的处理过程1066.3 嵌入SQL语句1126.3.1 声明嵌入SQL语句中使用的C变量1126.3.2 连接数据库1156.3.3 数据的查询和修改1156.3.4 游标的使用1166.3.5 SQLCA1176.3.6 WHENEVER1186.4动态SQL语句1196.4 .1 动态修改1196.4.2 动态游标1206.4.3 SQLDA1226.4.4 DESCRIBE语句1306.5 API130第六章嵌入式SQL(E-SQL)简介第一节什么是嵌入SQL语言?SQL是一种双重式语言,它既是一种用于查询和更新的交互式数据库语言,又是一种应用程序进行数据库访问时所采取的编程式数据库语言。
SQL语言:嵌入式SQL知识笔记1、概念SQL提供了将SQL语句嵌入到某种高级语言中的使用方式,通常采用预编译的方法将SQL语句嵌入高级语言中。
采用的方法由DBMS 的预处理程序对源程序进行扫码、识别出SQL语句,把它们转换为主语言调用语句,这样可以让主语言编译程序能识别它,最后由主语言的编译程序将整个源程序编译成目标码。
2、SQL嵌入主语言涉及的几个问题区分主语言语句与SQL语句:通常在SQL语句前加前缀EXEC SQL,结束标志会跟着主语言不同而不同。
主语言工作单元与数据库工作单元的通信机制1、SQL通信区:向主语言传递SQL语句执行状态信息,使主语言能够根据此信息控制程序流程。
2、主变量:也成为共享变量。
主语言向SQL语句提供参数主要通过主变量,主变量由主语言的程序定义,并用SQl的DECLARE语句说明。
比如C语言中用法:•••••exec sql begin delcare section char sno[4],cno[3]int grade;char sqlstate[7]exec sql end declare section根据共享变量givesno值查询学生关系students 中的学生姓名、年龄、性别•••exec sql select sname,age,sex into:Msno,:Mcno;givensno from studnets where sno:Msno;3、游标SQl语言主要是面向集合的,一条SQL语句可产生或处理多条记录。
而主语言是面向记录的,一组主变量一次只能放一条记录,因此引入游标,通过移动游标指针来决定获取那一条记录。
3.1 定义游标:•••exec sql declare<游标> cursor for <select查询语句>endexec3.2 打开游标•exec sql open <游标名> endexec该语句执行游标定义中的select语句,同时游标处于活动状况。