zoukankan      html  css  js  c++  java
  • 配置ORACLE的PRO*C环境

    1、访问数据库的方法
        在ORACLE数据库管理和系统中,有三种访问数据库的方法;
        ⑴.用SQL*Plus, 它有SQL命令以交互的应用程序访问数据库;
        ⑵.用第四代语言应用开发工具开发的应用程序访问数据库,这些工具有SQL*Froms,QL*Reportwriter,SQL*Menu等;
        ⑶.利用在第三代语言内嵌入的SQL语言或ORACLE库函数调用来访问。
        
            Pro*C就属于第三种开发工具之一, 它把过程化语言C和非过程化语言SQL最完善地结合起来, 具有完备的过程处理能力,又能完成任何数据
        库的处理品任务,使用户可以通过编程完成各种类型的报表。在Pro*C程序中可以嵌入SQL语言,利用这些SQL语言可以完成动态地建立、修改和
        删除数据库中的表,也可以查询、插入、修改和删除数据库表中的行,还可以实现事务的提交和回滚。在Pro*C程序中还可以嵌入PL/SQL块,以
        改进应用程序的性能,特别是在网络环境下,可以减少网络传输和处理的总开销。

    2、编译过程
        Pro*C是oracle的预编译器是一种编程工具,通过它把SQL语句嵌入到C语言程序中,编译过程如下:
        Pro*C源文件(*.pc) -> C源文件(*.c) -> 目标文件(*.o) -> 可执行文件。如图:
        
            预编译器把源程序作为输入,然后翻译程序中嵌入的SQL语句,把它们转化成对标准的ORACLE运行库的调用,最后生成一个修改过的源程序。
        通过对修改过的源程序进行编译、链接,形成可执行文件。

    3、Pro*C头文件和库文件
        如图:

        

    4、Oracle预编译选项配置文件
        默认在$ORACLE_HOME/bin路径下就有了可执行程序PROC以及相应的未经配置预编译环境。Pro*C预编译时的选项很多,可以把它放到一个文件中
        .如果在预编译时不指定配置文件, 则默认配置文件是 $ORACLE_HOME/precomp/admin/pcscfg.cfg
        编辑pcscfg.cfg文件:
            sys_include=(/opt/oracle/precomp/public,/usr/lib/gcc/i386-redhat-linux/4.1.1/include,/usr/lib/i386-redhat-linux4E/include/
            bits,/home/uriel/git-2.0.3/compat/vcbuild/include,/usr/lib/i386-redhat-linux4E/include)
            ltype=short
            
         此文件的sys_include中应包含sqlca.h及sqlda.h所在的路径(否则编译时报:‘sqlca’ 未声明),我这里为/opt/precomp/public。还需要包括
         stddef.h所在的路径,我这里为/usr/lib/gcc/i386-redhat-linux/4.1.1/include。如果这两个文件你也不知道在什么位置,可以通过
            #find / -name "sqlca.h"
            #find / -name "stddef.h"
         来查找。另外再将常用的头文件路径加上即可,如/usr/include。

    5、Oracle预编译选项
        如图:
        

        

        

        
    6、编译过程举例(具体实现可参考makefile博客)
        第一步,对带有嵌入式SQL的C代码程序(通常此程序以.pc结尾,简称PC代码)使用proc做一次预编译,将里面的嵌入式SQL转化为代表数据库功能调用的C代码。
        第二步,使用C编译器将C代码编译连接(其中包含数据库中的库 libclntsh.so)成可执行文件。
        .pc->.c: $proc iname=sample1.pc oname=sample1.c
        .c->.o $cc –c sample1.c
        .o->可执行文件 $cc –L$ORACLE_HOME/lib –lclntsh –o sample1 sample1.o
        
        嵌入式C编译时还需链接-lclntsh库(数据库中的库 libclntsh.so)

  • 相关阅读:
    Oracle RAC asm常用命令
    Oracle10g RAC关闭及启动步骤
    工具系列 | git checkout 可替换命令 git switch 和 git restore
    工具系列 | 博客签名
    工具系列 | Token认证方式之JWT【转载】
    PHP系列 | ThinkPHP5.1 如何自动加载第三方SDK(非composer包 )
    工具系列 | 虚拟化VMware ESXi 6.7服务器安装配置
    安全系列 | 【阿里云】安全告警处理-进程异常行为-访问恶意下载源
    其他系列 | Github 贡献统计异常的处理
    MySQL系列 | 安装 MySQL 5.7 on Ubuntu 16.04 | 18.04
  • 原文地址:https://www.cnblogs.com/uriel/p/4275423.html
Copyright © 2011-2022 走看看