104、proc 配置

1、环境的搭建
 安装好ORACLE后,在用户.profile文件中添加
 LD_LIBRARY_PATH=/usr/lib:$ORACLE_HOME/lib:$ORACLE_HOME/ctx/lib:$ORACLE_HOME/rdbms/lib
 然后
 export LD_LIBRARY_PATH
2、在命令行执行proc正确后,在文件/oracle_install/product/10.2.0.1/precomp/admin/pcscfg.cfg中添加如下内容:
 sys_include=(/ade/aime_rdbms_9819/oracle/precomp/public,/usr/include,/usr/lib/gcc-lib/i486-suse-linux/2.95.3/include,/usr/lib/gcc-lib/i386-redhat-linux/3.2.3/include,/usr/lib/gcc-lib/i386-redhat-linux7/2.96/include)
 ltype=short
 code=cpp
 cpp_suffix=cc
 parse=none
 SQLCHECK=SEMANTICS
 注:关于code=cpp,这里有三种模式,code=cpp、code=kr_c、code=ansi_c。采用何种方式决定了与编译proc编译后的文件后缀名和函数原型的方式。
2.1 code=cpp
        此时,与编译将采用C++的原型编译方式,编译后的文件以.cc结尾。
2.2 code=kr_c和code=ansi_c
        此时编译器都将按照C语言的原型方式编译,编译后文件以.c结尾。两者的区别是:
        当采用code=kr_c的方式编译时,原型编译为如下形式:
                  extern void sqlora(/*_long *, void * _**/) ;
        当采用code=ansi_c的方式编译时,原型编译形式如下:
                  extern void sqlora(long *, void *) ;
3、编写源程序first.pc。
#include <stdio.h>
EXEC SQL include sqlca.h ;

EXEC SQL BEGIN DECLARE SECTION ;
        char *uid = "uid/uid@uid" ;
EXEC SQL END   DECLARE SECTION ;

int main()
{
        EXEC SQL CONNECT :uid ;       

        if (sqlca.sqlcode == 0) {
                printf("Conn OK;/n") ;
        } else {
                printf("Conn ERROR;/n") ;
        }

        return 0 ;
}
4、编写Makefile文件。
CC=g++
first:
        proc first.pc
        ${CC} -o first -I$(ORACLE_HOME)/precomp/public/ -L$(ORACLE_HOME)/lib/ -lclntsh first.cc
        rm -rf t* first.lis first.cc
clean:
        rm -rf t* first.lis first.cc
        rm -rf first
        值得说明的是,如果我们采用code=cpp的方式编译,CC必须使用g++编译器,否则报错;如果采用code=ansi_c/code=kr_c的方式编译,则可使用C语言的编译器,如cc、gcc等。上述给出的是采用code=cpp的方式编译的,下面给出code=ansi_c/code=kr_c的makefile文件。
CC=cc
first:
        proc first.pc
        ${CC} -o first -I$(ORACLE_HOME)/precomp/public/ -L$(ORACLE_HOME)/lib/ -lclntsh first.c
        rm -rf t* first.lis first.c
clean:
        rm -rf t* first.lis first.c
        rm -rf first
 注意此时的first.cc都变成了first.c文件。
5、执行make命令,则输出如下结果:
proc first.pc

Pro*C/C++: Release 10.2.0.1.0 - Production on Thu Jan 15 15:23:19 2009

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

System default option values taken from: /oracle_install/product/10.2.0.1/precomp/admin/pcscfg.cfg

g++ -o first -I/oracle_install/product/10.2.0.1/precomp/public/ -L/oracle_install/product/10.2.0.1/lib/ -lclntsh first.cc
rm -rf t* first.lis first.cc
 表明执行成功,通过ls命令可以看到first执行程序已经成功被编译出来。
$ ls
first  first.pc  makefile

6、运行first。
$ ./first 
sqlca.sqlerrm.sqlerrmc:[];
Conn OK;

 至此,第一个proc程序结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值