计算机软件数据编程的是什么,[计算机软件及应用]数据库编程.ppt

[计算机软件及应用]数据库编程

第八章 数据库编程

◆嵌入式SQL

◆存储过程

◆ ODBC编程

8.1 嵌入式 SQL

引入嵌入式SQL的原因

SQL语言是非过程性语言 事务处理应用需要高级语言 这两种方式细节上有差别,在程序设计的环境下,SQL语句要做某些必要的扩充

嵌入式SQL

当一个程序即要访问数据库,又要处理数据时,把SQL语言嵌入程序设计语言即宿主语言中,将SQL语言访问数据库的功能和宿主语言的数据处理功能相结合,是目前解决该问题的最有效途径。这样使用的SQL称为嵌入式SQL(Embedded SQL, ESQL)

8.1.1 嵌入式SQL的处理过程

嵌入式SQL的基本处理过程

为了区分SQL语句与主语言语句,需要:

前缀:EXEC SQL

结束标志:随主语言的不同而不同

一般形式

以C为主语言的嵌入式SQL语句的一般形式

EXEC SQL ;

例:EXEC SQL DROP TABLE Student ;

宿主语言的编译程序不能识别SQL语句,所以首要问题要解决如何区分宿主语言的语句和SQL语句。

1)嵌入识别问题

DBMS将SQL语句的查询结果或执行状态必须交给宿主语言/应用程序处理(通过SQLCA);运行时,宿主语言的数据通过变量(称为主变量)也要能够交给SQL使用。

2)宿主语言与SQL语言的数据通信问题

宿主语言一般一次处理一条记录;SQL语言常常处理的是记录(元组)的集合,其查询结果通常是含多个记录的一张表。

3)宿主语言的单记录与SQL的多记录的问题

说明:SQL作为子语言嵌入在宿主语言中使用必须要解决以下三方面问题:

8.1.2 嵌入式SQL语句与主语言之间的通信

将SQL嵌入到高级语言中混合编程,程序中会含有两种不同计算模型的语句

SQL语句: 描述性的面向集合的语句-负责操纵数据库

高级语言语句: 过程性的面向记录的语句-负责控制程序流程

工作单元之间的通信方式

(1) SQL通信区

♦ 向主语言传递SQL语句的执行状态信息

♦ 主语言能够据此控制程序流程

(2) 主变量

♦ 主语言向SQL语句提供参数

♦ 将SQL语句查询数据库的结果交主语言进一步处理

(3) 游标

♦ 解决集合性操作语言与过程性操作语言的不匹配

一、SQL通信区(SQL Communication Area, SQLCA)

SQL被执行时,DBMS将产生的各类系统信息(如执行状态信息)写入系统通信区,应用程序在调用SQL后,可通过读取数据通信区中信息来确定语句执行情况。

使用SQLCA:

SQLCA中有一个存放每次执行SQL语句后返回代码的变量SQLCODE

如果SQLCODE等于预定义的常量SUCCESS,则表示SQL语句成功,否则表示出错

应用程序每执行完一条SQL 语句之后都应该测试一下SQLCODE的值,以了解该SQL语句执行情况并做相应处理

定义SQLCA:

用EXEC SQL INCLUDE SQLCA加以定义

二、主变量( Host Variable)

♦ 主变量的分类与作用

输入主变量:由应用程序赋值,SQL引用。

输出主变量:SQL对其赋值或设置状态信息,返回给应 用程序。

SQL语句使用宿主语言的程序变量来输入/输出数据,这样的变量简称为主变量(Host Variable)

♦ 指示变量(Indicator Variable)

1)什么是指示变量:

整型变量

用来“指示”所指主变量的值或条件

2)指示变量的用途:

输入主变量可以利用指示变量赋空值

输出主变量可以利用指示变量检测出是否空值,值是否被截断

♦ 在SQL语句中说明主变量和指示变量

BEGIN DECLARE SECTION

.........

......... (说明主变量和指示变量)

.........

END DECLARE SECTION

♦在SQL语句中使用主变量

SQL语句中的主变量名前要加冒号(:)作为标志

♦在SQL语句使用指示变量

(1)指示变量前也必须加冒号(:)标志

(2)必须紧跟在所指主变量之后

例如:

:Hgrade :Gradeid

三、 游标(Cursor)

♦ 游标的概念

游标是系统为用户开设的一个数据缓冲区,存放SQL的执行结果。

♦ 为什么要使用游标

当查询结果超过一个元组时,不能一次性将结果值赋给宿主语言的变量,因为主变量仅能保存一个数据,而不是一组数据。

(1)定义游标

EXEC SQL DECLARE SX CURSOR FOR

SELECT Sno, Sname, Ssex,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值