没有合适的资源?快使用搜索试试~ 我知道了~
ORACLE_ProC
3星 · 超过75%的资源 需积分: 9 9 下载量 167 浏览量
2011-10-21
16:17:45
上传
评论 1
收藏 74KB DOC 举报
温馨提示
试读
14页
ORACLE_ProC,ORACLE_ProC,ORACLE_ProC,ORACLE_ProC
资源推荐
资源详情
资源评论
ORACLE 培训教程:pro*c 的使用(一)
一、Pro*C 程序概述
1. 什么是 Pro*C 程序
在 ORACLE 数据库管理和系统中,有三种访问数据库的方法:
o 用 SQL*Plus,它有 SQL 命令以交互的应用程序访问数据库;
o 用 第 四 代 语 言 应 用 开 发 工 具 开 发 的 应 用 程 序 访 问 数 据 库 , 这 些 工 具 有
SQL*Froms,QL*Reportwriter,SQL*Menu 等;
o 利用在第三代语言内嵌入的 SQL 语言或 ORACLE 库函数调用来访问。
Pro*C 就属于第三种开发工具之一,它把过程化语言 C 和非过程化语言 SQL 最完善地结合
起来,具有完备的过程处理能力,又能完成任何数据库的处理品任务,使用户可以通过编程
完成各种类型的报表。在 Pro*C 程序中可以嵌入 SQL 语言,利用这些 SQL 语言可以完成
动态地建立、修改和删除数据库中的表,也可以查询、插入、修改和删除数据库表中的行,
还可以实现事务的提交和回滚。
在 Pro*C 程序中还可以嵌入 PL/SQL 块,以改进应用程序的性能,特别是在网络环境下,
可以减少网络传输和处理的总开销。
2. Pro*C 的程序结构图
通俗来说,Pro*C 程序实际是内嵌有 SQL 语句或 PL/SQL 块的 C 程序,因此它的组成很
类似 C 程序。但因为它内嵌有 SQL 语句或 PL/SQL 块,所以它还含有与之不同的成份。为
了让大家对 Pro*C 有个感性的认识,特将二者差别比较如下图所示。
(点击查看大图)
二 Pro*C 程序的组成结构
每一个 Pro*C 程序都包括两部分:应用程序首部;应用程序体。
应用程序首部定义了 ORACLE 数据库的有关变量,为在 C 语言中操纵 ORACLE 数据
库 做 好 了 准 备 。 应 用 程 序 体 基 本 上 由 Pro*C 的 SQL 语 句 调 用 组 成 。 主 要 指 查 询
SELECT、INSERT、UPDATE、DELETE 等语句。
应用程序的组成结构如下图所示:
1. 应用程序首部
应用程序的首部就是 Pro*C 的开始部分。它包括以下三部分:C 变量描述部分;SQL 变量
描述部分(DECLARE 部分);SQL 通信区。
2. DECLARE 部分(描述部分)
描 述 部 分 说 明 程 序 的 SQL 变 量 , 定 义 部 分 以 EXEC SQL BEGIN DECLARE
SECTION;开始和以 EXEC SQL END DECLARE SECTION;结束的。它可以出现
在程序的主部,也可出现在局部。
SQL 变量的说明和使用
在说明段能为 SQL 变量指定的数据类型如下图所示:
这些数据类型实际上就是 C 语言的数据类型,其中 VARCHAR 中视为 C 数据类型的扩充,
这在以后会谈到。
SQL 变量的使用应注意以下几点:必须在描述部分明确定义;必须使用与其定义相同的大
小写格式;在 SQL 语句中使用时,必须在其之前加一个“:”(冒号),但在 C 语句中引用时
不需加冒号;不能是 SQL 命令中的保留字;可以带指示变量。
例如:
EXEC SQL BEGIN DECLARE SECTIONS;
VARCHAR programe[30];
INT porgsal,pempno;
EXEC SQL END DECLARE SECTION;
EXEC SQL SELECT ENAME,SAL
INTO: programe, : progsal
FROM EMP
WHERE EMPNO = : pempno;
指示器变量的说明和引用
指示变量实际上也是一类 SQL 变量,它被用来管理与其相关联的宿主变量(即在 SQL 语
句中充当输入或输出的变量)。每一个宿主变量都可定义一个指示器变量,主要用于处理空
值(NULL)。
指 示 器 变 量 的 说 明 基 本 同 一 般 SQL 变 量 一 样 , 但 必 须 定 义 成 2 字 节 的 整 型 , 如
SHORT、INT。在 SQL 语句中引用时,其前也应加“:”(冒号),而且必须附在其相关联
的宿主变量之后,在 C 语句中,可独立使用。当指示器变量为-1 时,表示空值。
例如:
EXEC SQL BEGIN DECLARE SECTION;
INT dept- number;
SHORT ind – num;
CHAR emp –name;
EXEC SQL END DECLARE SECTION;
Scanf(“90d %s”, & dept- number , dept – name );
If (dept – number ==0)
Ind – num = -1;
Else
Ind – num = 0;
EXEC SQL INSERT INTO DEPT (DEPTNO, DNAME)
VALUES(:dept – number : ind- num , :dept – name);
其中 ind–num 是 dept–number 的指示器变量。当输入的 dept–number 值是 0 时,则
向 DEPT 表的 DEPTNO 列插入空值。
指针 SQL 变量的说明和使用
指针 SQL 变量在引用前也必须在 DECLARE 部分先说明。其说明格式同 C 语言。在 SQL
语句中引用时,指针名字前要加前缀“:”(冒号)而不加“*”(星号)。在 C 语句中用法如
同 C 语言的指针变量。
数组 SQL 变更的说明和引用
在 SQL 语句中引用数组时,只需写数组名(名字前加冒号),不需写下标,在 C 语句中用
法如同 C 语言的数组变量。使用数组可大大降低网络传输开销。如要向一表插入 100 行数
据,如果没有数组,就要重复 100 次,而引用后,只须执行一次 insert 语句、便可一次性
插入。
例如:
EXEC SQL BEGIN DECLARE SECTION;
Int emp_number[100];
Char emp_name[100][15];
Float salary[100],commission[100];
Int dept_number;
EXEC SQL END DECLARE SECTION;
…
EXEC SQL SELECT EMPNO,ENAME,SAL,COMM
INTO :emp_number,:emp_name,:salary,:commission
FROM EMP
WHERE DEPTNO=:dept_number;
在使用数组时,应注意以下几点:不支持指针数组;只支持一维数组,而 emp-name
[100][15]视为一维字符串;数组最大维数为 32767;在一条 SQL 语句中引用多个数组时,
这些数组维数应相同;在 VALUES,SET,INTO 或 WHERE 子名中,不允许把简单
SQL 变量与数组 SQL 变量混用;不能在 DELARE 部分初始化数组。
例如,下面的引用是非法的:
EXEC SQL BEGIN DECLARE SECTION;
Int dept – num [3] = {10,20,30};
EXEC SQL END DECLARE SECTION;
EXEC SQL SELECT EMPNO, ENAME , SAL
INTO : emp – num [ i ], : emp – name [ i ], : salarg [ i ]
FROM EMP
伪类型 VARCHAR 的说明和引用
剩余13页未读,继续阅读
资源评论
- Ta_long2012-06-11讲的很粗略 没头没尾的
wuenqin10
- 粉丝: 8
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功