- 0
- 0
- 约2.19万字
- 约 13页
- 2017-12-29 发布于浙江
- 举报
下载
下载
第8章 解决Oracle预编译器问题
O r a c l e预编译器允许在第三代程序设计语言 ( 3 G L )所编的程序中嵌入 S Q L语句,也就是允
许3 G L程序用标准的方式访问 O r a c l e数据库。一个预编译器把嵌入的 S Q L语句翻译为标准的
O r a c l e运行库调用。O r a c l e有所有流行的3 G L (包括C 、P a s c a l 、F O RT R A N和C O B O L语言)生成
预编译器。但在有些操作系统上,某些预编译器可能不能使用,用户可参考安装手册,或从
安装盘中获取可使用的预编译器清单。在一些操作系统上,甚至有必要获得一个单独的产品
集,例如:Oracles Programmer/2000 ,以使用预编译器。
在这一章中,我们将提供有关 O r a c l e预编译的信息,包括程序开发中的方方面面,还将讨
论各种数据类型如双浮点数字符串和可变字符串的处理以及有关程序开发的好方法,可使用
户避免常见的错误。
8.1 用预编译器开发程序
除了一个被称为预编译的附加步骤以外,开发程序的过程没有什么变化。我们可以用某
种编辑器将 S Q L语句嵌入到源代码中,这一源代码作为预编译器的输入,预编译器将嵌入的
S Q L语句逐一翻译成本地代码,最后,通过包含 O r a c l e调用所必须的某些 O r a c l e库后,将代码
编译和连接生成可执行文件。图 8 - 1表示了该方法的主要步骤。需要强调的是, O r a c l e预编译
器在大多数情况下只是简单地替换嵌入的 S Q L文本,在这阶段中可以有选择的检查 S Q L语法
错误。
使用标准编辑器创建带有嵌入 S Q L语句的源代码
嵌入的S Q L语句
O r a c l e预编译器
被替换为本地语
言中的O r a c l e
编 译
O r a c l e运行时库 链 接
生成可执行文件
图8-1 使用预编译器进行程序开发
第8章 解决Oracle预编译器问题 153
下载
8.2 对浮点数和双精度数的处理
在程序设计语言 ( 比如C语言) 中,像f l o a t (浮点数)和d o u b l e (双精度数)这样的数据类型是用
二进制表示实数。这两种数据类型是对实数的近似表示,表示的精确度通常被定义于操作系
统级(如U N I X 中的f l o a t文件) 。另一方面,在O r a c l e数据库中,所有的数都是用特别的十进制
来存储的。当用户在程序中用浮点和双精度数时, O r a c l e将浮点数和双精度数的二进制表示转
换为自己的十进制表示。这个转换过程实际上是 O r a c l e读取二进制的浮点数和双精度数 (仅是
一个近似) ,然后用所有的有效数字将这些数用自己的格式存储。这就会导致问题的发生,数
据存储在O r a c l e 中的形式可能同用户所期望的不一致。为了避免这一问题的发生,建议用户在
往数据库中插入这些数据之前,在接收原来定义为浮点数和双精度数的宿主变量的输入时,
应该使用 S Q L 中的R O U N D 函数。如果没有使用该函数,可能会导致储存的数据与期望的有所
不同,当用户试图检索这些数据时,就会看见“ ORA-1403-NO data found ”错误。实际上,
用户最好在W H E R E子语句中完全避免使用浮点数。
8.3 字符串
原创力文档

文档评论(0)