第一部分 PRO*C预编译界面 1
第一章 PRO*C介绍 1
1.1 什么是PRO*C 1
1.2 PRO*C的特点 2
1.3 一般概念 2
1.3.1 PRO*C命令 2
1.3.2 C命令和SQL语句的混合使用 2
1.3.3 前缀EXEC SQL的命令 2
1.3.4 以EXEC ORACLE做为前缀的命令 3
1.3.5 SQL可执行语句和说明语句 3
1.3.6 PRO*C程序的两个部分 3
第二章 PRO*C程序的组成 4
2.1 程序头 4
2.1.1 程序头:DECLARE部分 4
2.1.2 程序头:说明SQL通讯数据区 8
2.1.3 ORACA:对SQLCA的一个扩充 9
2.1.4 ORACA中的信息 9
2.1.5 使用ORACA 10
2.1.6 程序头:与ORACLE的连结 11
2.2 程序体 12
2.2.1 DECLARE STATEMENT语句 12
2.2.2 DECLARE DATABASE语句 13
2.2.3 EXEC ORACLE选择项 13
2.2.4 数组读取和数组赋值特征 14
2.2.5 数组读取 14
2.2.6 数组读取的限制 15
2.2.7 数组赋值 15
2.2.8 注意事项 16
2.2.9 对数组读取和数值赋值使用FOR语句 16
2.4 PRO*C程序例 17
2.4.1 在ORACLE上注册和注销 17
2.4.2 创建一个表 18
2.4.3 从终端输入所要插入的记录 19
2.4.4 使用数组把文件中的数据插入表中 20
2.4.5 从终端上输入修改值 22
2.4.6 利用数组修改 24
2.4.7 利用数值组查询 26
2.4.8 从一个存在的表中删除一条记录 28
第三章 查询 29
3.1 有关查询部分 29
3.1.1 宿主变量的输入 30
3.1.2 输出宿主变量 30
3.2 只返回单条记录的查询 30
3.3 数据转换 31
3.3.1 数值型数据转换 31
3.3.2 字符型数据的转换 31
3.3.3 转换错误 31
3.4 返回多条记录的查询 32
3.5 指针的使用 32
3.5.1 DECLARE CURSOR语句 32
3.5.2 OPEN CURSOR语句 33
3.5.3 活动集中记录的获取 33
3.5.4 CLOSE CURSOR语句 34
3.5.5 CURRENT CURSOR语句 34
3.5.6 指针的类型 35
3.6 程序示例 35
3.6.1 带有WHERE子句的检索 35
3.6.2 一个更复杂的检索:需要终端输入 36
第四章 提交和复原 39
4.1 逻辑工作单元 39
4.1.1 启动一个工作单元 39
4.1.2 结束一个工作单元 40
4.1.3 一个工作单元的资源需求 40
4.2 COMMIT WORK(提交) 40
4.3 ROLLBACK WORK(复原) 40
4.4 RELEASE任选项 41
第五章 错误检测和恢复 42
5.1 利用指示变量中的返回值 42
5.1.1 使用指示变量和空值 42
5.2 SQLCA的结构 43
5.2.1 何时引用SQLCA 44
5.2.2 SQLCA中的各个元素的含义 44
5.3 WHENEVER语句 47
5.3.1 WHENEVER语句的语法 47
5.3.2 NOT FOUND选项特性的变化 48
5.3.3 WHERE语句的作用域范围 48
5.3.4 WHENEVER对明显错误的校验 48
5.4 程序实例 49
第六章 动态定义语句 52
6.1 动态定义语句的定义 52
6.2 动态定义语句的类型 52
6.3 为动态SQL语句接受输入 53
6.3.1 注意DDL语句的使用 54
6.4 方式1:EXECUTE IMMEDIATE 54
6.4.1 使用EXECUTE IMMEDIATE的前提 55
6.4.2 EXECUTE IMMEDIATE的限制 55
6.4.3 EXECUTE IMMEDIATE的实例 55
6.5 方式2:使用PREPARE和EXECUTE 56
6.5.1 PREPARE和EXECUTE的限制 57
6.5.2 PREPARE和EXECUTE的实例 57
6.6 方式3:PREPARE,OPEN和FETCH 59
6.6.1 使用PREPARE,DECLARE,OPEN,FETCH 59
6.7 方式4:使用DESCRIPTORS 61
6.7.1 SQL的描述区(SQLDA) 61
6.7.2 新的DESCRIBE的特性 63
6.7.3 处理一个运行期间的查询 65
第七章 调用PRO*C(预编译命令) 69
7.1 运行PRO*C的要求 69
7.2 设置目录或路径 69
7.3 PRO*C 5.1版本的变化 69
7.4 命令语法 69
7.4.1 必需的参数 70
7.4.2 PRO*C运行选择项 70
7.4.3 使用REBIND的例程 75
7.5 编译和连接 78
7.6 条件预编译 78
7.7 分别预编译 79
7.8 混合使用PRO*C和ORACLE调用界面程序 79
7.9 在预编译期间出现什么? 80
7.9.1 程序运行时的一致性检查 80
第二部分:PRO*C ORACLE调用界面 81
第八章 编写ORACLE调用界面程序 82
8.1 基本程序结构 82
8.2 指针数据区 84
8.3 注册数据区 88
8.4 程序界面数据区 89
8.5 一般编码准则 89
8.5.1 可选择参数 90
8.5.2 使用替代变量 91
8.5.3 使用指示变量 91
8.5.4 关于使用编译优化器 92
第九章 各种程序调用描述 93
9.1 OLON调用 93
9.2 ORLON调用 94
9.3 OOPEN调用 95
9.4 OSQL3调用 96
9.5 ODSC调用 96
9.6 ONAME调用 98
9.7 ODEFIN调用 99
9.8 OBNDKV和OBNDRN调用 101
9.9 OOPT调用 103
9.10 OEXEC调用 103
9.11 OEXN调用 104
9.12 ORES调用 105
9.13 OFETCH调用 105
9.14 OFEN调用 106
9.15 OBREAK调用 107
9.16 OCAN调用 107
9.17 OCOM调用 108
9.18 OROL调用 108
9.19 OCON调用 109
9.20 OCOF调用 109
9.21 OERMSG调用 110
9.22 OCMN调用 110
9.23 OCLOSE调用 110
9.24 OLOGOF调用 111
第十章 老的PRO*SQL(OCI)调用 112
10.1 OLOGON调用 113
10.2 OSQL调用 113
10.3 ODSRBN调用 114
10.4 ODFINN调用 115
10.5 OBIND和OBINDN调用 116
第十一章 数据类型 119
11.1 数据类型描述 119
11.2 数据转换 123
附录A PRO*C错误信息 124
附录B 一般编程指南 127
附录C 保留字 128
附录D PRO*C样板程序 129
附录E 带有动态SQL语句的样板程序 134
附录F C语言例程 149
附录G 程序调用参考 157