当前位置:Linux教程 - Linux文化 - ORACLE 8.16 FOR RHLINUX6.2的PRO*C环境

ORACLE 8.16 FOR RHLINUX6.2的PRO*C环境


1、PRO*C:

ORACLE数据库作为数据库产品中的佼佼者,应用十分广泛,随着对其应用的深入,使用ORACLE和C来编制应用系统成为许多系统的选择,而ORACLE和C语言的接口知识成为应该掌握的和十分有用的。

PRO*C是ORACLE的预编译器是一种编程工具,通过它把SQL语句嵌入到C语言程序中。如图:

预编译器把源程序作为输入,然后翻译程序中嵌入的 SQL语句,把它们转化成对标准的ORACLE运行库的调用,最后生成一个修改过的源程序。通过对修改过的源程序进行编译、链接,形成可执行文件。

2、环境配置:

A、说明:

ORACLE预编译器在ORACLE 8I安装时是默认或选择安装的,安装了PRO*C,则在$ORACLE_HOME/bin路径下就有了可执行程序PROC,以及相应的未经配置预编译环境。为使PRO*C预编译器能工作我们还必须对环境做一些配置。

ORACLE的PRO*C是对预编译器的选项值的改变来配置环境的。预编译指令基本格式如下:

Proc 选项名=选项值 源文件

也可把选项值的改变放到CONFIG指定的文件中做。

PROC的选项

auto_connect

允许自动连接到 ops$ 帐号

char_map

正在映射字符数组和字符串

Close_on_commit

关闭所有 COMMIT 游标

codekr_c

将要生成的代码类型

Comp_charset

C 编译器支持的字符集类型

Config

用另一配置文件覆盖系统配置文件

Cpp_suffix

覆盖缺省的 C++ 文件名后缀

dbmsnative

兼容模式

Def_sqlcode

生成 '#define SQLCODE sqlca.sqlcode' 宏

Define

定义预处理器符号

Durationtransaction

设置高速缓存中对象的 pin 持续时间

Dynamic

指定 Oracle 或 ANSI 动态 SQL 语义

Errors

是否将错误消息发送到终端

Errtype

输入文件的列表文件名称错误

Fips

ANSI 的 FIPS 标志不符合用法

Header

为预编译标题指定文件扩展名

hold_cursor

在游标高速缓存中控制游标保留

iname

输入文件的名称

Include

包括文件的目录路径

Intype

有关类型信息的输入文件名称

Lines

将 #line 指令添加到生成的代码中

Lname

覆盖缺省列表文件名

Ltype

列表文件中生成的数据量

maxliteral

生成的文字串的最大长度

maxopencursors

高速缓存的开放游标的最大数量

mode

代码符合 Oracle 或 ANSI 规则

Nls_char

指定国家语言字符变量

Nls_local

控制 NLS 字符语义的实现方法

Objects

支持对象类型

oname

输出文件名

oraca

控制 ORACA 的使用

Pagelen

列表文件页面长度

parse

控制进行语法分析的非 SQL 代码

prefetch

游标 OPEN 期间预读取的行数

Release_cursor

控制从游标高速缓存中释放游标

Select_error

控制选择标记错误

sqlcheck

编译时间 SQL 校验总量

Sys_include

系统标题文件所在目录

Threads

指示多线程应用程序

type_code

将 Oracle 或 ANSI 类型代码用于动态 SQL

Unsafe_null

允许在没有指示变量的情况下进行> NULL 读取

Userid

用户名/口令 [@dbname] 连接串

Varchar

允许使用隐式 varchar 结构

Version

将要返回的对象版本

 

大部分选项我们都可以用默认值,但其中有几个选项是需要配置的。

l CONFIG:指定PROC的CONFIG文件。PROC默认配置文件为$ORACLE_HOME/precomp/admin/pcscfg.cfg,我们可以编辑我们要使用的CONFIG文件。

l INCLUDE:包括文件的目录路径,一般在CONFIG文件中配置,pcscfg.cfg中有默认定义。

l SYS_INCLUDE:系统头文件所在目录,一般在CONFIG文件中配置,pcscfg.cfg中有默认定义。但要注意可能默认的系统头文件的路径不对。如
sys_include=($ORACLE_HOME/precomp/public,/usr/include,/usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/include)

lUSERID:用户名/口令 [@dbname] 连接串

B、配置:

配置工作比较简单,只要将默认的>CONFIG文件COPY到源程序所在的路径下,修改其中的USERID。

使用如下命令对PROC源文件进行预编译,输出相应的C源程序。

Proc config=myconfg.cfg iname=myprog.pc oname=myprog.c

PRO*C将对INAME指定的PROC源文件进行预编译,输出ONAME指定的文件。

3、联编环境:

预编译只是将PROC源文预编译成C源文件,而要将不同源文件编译生成的目标文件联编,则要指定联编所需要的LIBRARY,ORACLE接口程序(PROC程序)需要的the client shared library分布在许多路径下,为联编方便,ORACLE提供了$ORACLE_HOME/precomp/demo/proc/demo_proc.mk文件。

使用如下命令:

make–f demo_proc.mk OBJS=”myporg.o mydb.o” EXE=myprog.e build

就可以完成联编。

——兰振兴([email protected])