第一篇 PRO*C程序设计 1
第一章 PRO*C程序概述 1
§1.1 什么叫PRO*C程序 1
§1.2 ORACLE预编程序 1
§1.3 PRO*C程序的组成及举例 2
1.3.1 PRO*C程序举例 2
1.3.2 PRO*C程序的一般组成 5
§1.4 开发和运行一个PRO*C应用程序的基本步骤 7
§1.5 PRO*C程序书写格式的几点说明 7
§1.6 参考资料 8
2.1.2 说明段 9
2.1.1 SOL变量 9
§2.1 说明段 9
第二章 PRO*C程序设计的基础知识 9
§2.2 数据类型和转换 10
2.2.1 内部数据类型 10
2.2.2 SQL伪列和函数 10
2.2.3 外部数据类型 11
2.2.4 SQL变量的数据类型 12
2.2.5 数据类型转换 12
§2.3 数据类型等价 14
2.3.1 SQL变量等价 14
2.3.2 用户定义类型等价 15
§2.4 SQL变量的说明和引用 16
2.4.1 SQL变量的说明和引用 16
2.4.2 指示器变量的说明和引用 19
2.4.3 指针宿主变量的说明和引用 21
2.4.4 数组SQL变量的说明和引用 22
2.4.5 VARCHAR变量的说明和引用 24
§2.5 通讯区的说明 25
2.5.1 SQLCA的说明 25
2.5.2 ORACA的说明 29
2.5.3 SQLCODE说明 31
2.5.4 INCLUDE语句 32
第三章 应用程序的设计方法及举例 34
§3.1 PRO*C程序中嵌入的SQL语句 34
3.1.1 PRO*C程序中能嵌入的SQL语句 34
3.1.2 嵌入式SQL语句的书写文法 34
3.1.3 可执行SQL语句和说明性SQL语句 35
§3.2 应用程序的登录 36
3.2.1 有关登录的几个概念 36
3.2.2 登录到当前节点的缺省数据库上 37
3.2.3 单显式登录 38
3.2.4 并行登录 41
§3.3 插入、更新和删除 44
3.3.1 数据插入应用程序 45
3.3.2 数据更新应用程序 49
3.3.3 数据删除应用程序 51
§3.4 查询应用程序 54
3.4.1 简单查询 54
3.4.2 数据操作的综合例子 54
3.4.3 利用数组实现返回多行的查询 63
3.4.4 用光标实现返回多行的查询 66
§3.5 在PRO*C程序中嵌入PL/SQL 78
3.5.1 嵌入PL/SQL块的优点 78
3.5.2 嵌入PL/SQL块的方法 81
3.5.3 使用宿主变量 81
3.5.4 使用光标 87
3.5.5 存储子程序 88
3.5.6 使用动态SQL方法 94
§3.6 错误处理 95
3.6.1 使用WHENEVER语句进行错误处理 95
3.6.3 错误处理举例 99
3.6.2 显式测试SQLCA 99
第四章 事务处理 102
§4.1 保护数据库中数据完整性和安全性的措施 102
§4.2 事务的定义和提交 102
§4.3 事务回滚 104
4.3.1 事务保留点 104
4.3.2 事务回滚 106
§4.4 只读事务 107
§4.5 行封锁数和表封锁 108
4.5.1 行封锁 108
4.5.2 表封锁 109
§4.6 事务定义和控制中应注意的问题 109
5.1.2 动态SQL的优缺点 111
5.1.1 什么是动态SQL 111
§5.1 动态SQL技术的基本思想和方法 111
第五章 动态SQL技术 111
5.1.3 动态SQL语句的表示方法 112
5.1.4 动态SQL语句的处理过程 112
5.1.5 动态SQL方法的选择 112
§5.2 动态SQL方法1 113
§5.3 动态SQL方法2 116
5.3.1 PREPARE语句 116
5.3.2 EXECUTE语句 117
5.3.3 动态SQL方法2的应用举例 117
§5.4 动态SQL方法3 120
5.5.1 方法4的基本思想 124
§5.5 动态SQL方法4 124
5.5.2 SQLDA的说明和引用 125
5.5.3 预备知识 129
5.5.4 动态方法4所用的SQL语句 132
5.5.5 方法四的处理步骤 133
5.5.6 方法4的应用举例 143
§5.6 宿主数组在动态方法中的应用 154
§5.7 在动态方法中使用PL/SQL块 157
第六章 编写SQL*FORMS的用户出口 159
§6.1 SQL*FORMS用户出口的概念 159
6.1.1 什么是用户出口 159
6.1.2 什么时候需写用户出口 159
6.2.3 IAF GET语句 160
6.2.1 编写用户出口所用的语句 160
6.2.2 变量 160
6.1.3 开发用户出口的步骤 160
§6.2 如何编写用户出口 160
6.2.4 IAF PUT语句 161
§6.3 用户出口的引用 162
6.3.1 用户出口的引用方法 162
6.3.2 向用户出口传递参数 162
6.3.3 把值返回给Form 162
§6.4 用户出口举例 163
§6.5 用户出口的编译和连接 165
6.5.1 用户出口的预编和编译 165
6.5.2 使用GENXTB实用程序来在IAPXTB上加一项 165
§6.6 开发用户出口的注意事项 166
6.5.3 把用户出口连接到SQL*Forms中 166
第七章 运行PRO*C预编译程序 167
§7.1 PRO*C预编译程序的操作命令及可选项 167
7.1.1 预编译程序的操作命令 167
7.1.2 预编译程序的可选项 167
§7.2 条件预编译和分别预编译 178
7.2.1 条件预编译 178
7.2.2 分别预编译 179
§7.3 编译与连接 180
1.1.3 利用OCI开发应用程序的优点 181
1.1.1 什么是ORACLE调用接口 181
1.1.2 什么是OCI程序 181
第一章 ORACLE调用接口概述 181
第二篇 ORACLE调用接口 181
§1.1 ORACLE调用接口的有关概念 181
1.1.4 常用的一些特殊术语 182
§1.2 OCI程序的基本结构及举例 182
§1.3 运行OCI程序的基本步骤 184
§1.4 参考资料 185
第二章 OCI程序设计的基础知识 186
§2.1 OCI程序中用到的数据结构 186
2.1.1 用户定义的数据类型名 186
2.1.2 登录数据区 186
2.1.3 宿主数据区 188
2.1.4 光标数据区 188
2.2.1 SQL语句的类型 192
§2.2 SQL语句的处理 192
2.2.2 SQL语句的处理步骤 193
2.2.3 语句的延迟执行 194
§2.3 OCI程序的编码步骤 195
§2.4 OCI程序的编码规则 198
§2.5 在OCI程序中使用PL/SQL 201
2.5.1 OCL程序中使用的PL/SQL块 201
2.5.2 PL/SQL块的处理过程 201
2.5.3 PL/SQL的应用举例 202
2.5.4 PL/SQL错误号及错误信息 203
2.5.5 数组的限制 203
§2.6 开发X/Open DTP应用 203
3.1.3 参数 205
3.1.2 数据结构 205
3.1.1 数据类型 205
第三章 OCI程序的编码方法及所引用的OCI库函数 205
§3.1 调用OCI函数的几点说明 205
3.1.4 参数描述 206
3.1.5 函数返回值 206
3.1.6 变量的存储单元 207
§3.2 OCI程序与ORACLE数据库的连接 207
§3.3 打开光标 209
§3.4 分析SQL语句 209
§3.5 结合输入变量的地址 211
3.5.1 OBNDRN、OBNDRV函数 211
3.5.2 OBNDRA函数 214
3.5.3 应用举例 215
3.6.1 ODESCR函数 221
§3.6 描述选择表项和PL/SQL过程参数 221
3.6.2 ODESSP函数 225
§3.7 定义选择表项 229
§3.8 执行SQL语句 231
3.8.1 OEXEC函数 231
3.8.2 OEXN函数 233
§3.9 提取查询行 234
3.9.1 OEXFET函数 234
3.9.2 OFEN函数 236
3.9.3 OFETCH函数 240
3.9.4 OFLNG函数 241
§3.10 数据操纵和提取的控制 243
3.10.1 OBREAK函数 243
3.10.2 OCAN函数 246
§3.12 事务控制 247
§3.11 关闭光标 247
3.12.1 OCOM函数 248
3.12.2 OCON函数 248
3.12.3 OCOF函数 248
3.12.4 OROL函数 249
3.12.5 OOPT函数 249
§3.13 切断与ORACLE的连接 249
§3.14 错误处理 250
§3.15 在PRO*C程序中嵌入OCI函数调用 251
§3.16 分布事务处理 252
§3.17 已过时和将要过时的OCI函数 253
4.1.1 oratypes.h 255
第四章 OCI程序实例 255
§4.1 头文件 255
4.1.2 Ocidfn.h 258
4.1.3 Ocidem.h 261
4.1.4 Ociapr.h 262
4.1.5 Ocikpr.h 264
§4.2 实例1 266
§4.3 实例2 276
§4.4 实例3 287
§4.5 实例4 294
附录A 嵌入SQL语句语法图 304
附录B OCI库函数清单(关于C语言) 319
附录C ORACLE的保留字和关键字 322