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的PRO*C环境的更多相关文章

  1. OCM_第二天课程:Section1 —》配置 Oracle 网络环境

    注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...

  2. 轻松三步教你配置Oracle—windows环境

    最近笔者在学习Oracle的时候,虽然度过了大家所说的安装难题,但是又遇到了一系列的问题,经过多方求教才知道原来是自己仅仅是安装了Oracle,却没有在环境变量中进行相应的配置.笔者也像大家遇到问题时 ...

  3. 配置ORACLE 11g绿色版客户端和PLSQL远程连接环境

    配置ORACLE 11g绿色版客户端和PLSQL环境   本方法是通过使用ORACLE官方提供的精简版客户端,即绿色免安装的客户端.   Instant client的版本很多:主要是Basic和Ba ...

  4. window7+wamp环境配置Oracle数据库连接

    最近开发需要使用的oracle数据库!翻看了PHP手册,也在网上找了些帖子!功夫不负有心人,花费了四五个小时的时间,终于找到了Oracle的配置方法.下面就讲解下如何配置Oracle数据库连接吧! 附 ...

  5. oracle 的安装 及环境的配置...

    前言 最近这段时间和香港同事一起做项目  负责给日本客户做一个产品  使用的是Oracle 数据库   在一开始项目启动时一直报和oracle数据库有关    本机在这之前就已经安装好了    由于使 ...

  6. Auto.js pro 开发环境配置

    本文仅供学习交流使用,如侵立删!demo下载见文末 Auto.js pro 开发环境配置 准备: 1.Auto.js Pro Auto.js 已暂停维护 -下载链接放在了文章底部,有需要自行下载 2. ...

  7. Windows7配置GPU和Theano编程环境

    可参考Windows安装Theano官方教程: http://deeplearning.net/software/theano/install_windows.html#install-windows ...

  8. 配置ORACLE 客户端连接到数据库

    --================================= -- 配置ORACLE 客户端连接到数据库 --================================= Oracle ...

  9. Redhat Enterprise 5.4下安装配置Oracle 11g R2详细过程

    1.Linux环境配置准备 环境:Linux:Redhat Enterprise 5.4,DB:Oracle 11g R2 X64,Oracle安装到/home/oralce_11目录下. 配置过程如 ...

随机推荐

  1. 【转载】#458 Errors While Converting Between enum and Underlying Type

    You can convert to an enum value from its underlying type by casting the underlying type (e.g. int) ...

  2. UVALive 6261 Jewel heist

    题意:珠宝大盗Arsen Lupin偷珠宝.在展厅内,每颗珠宝有个一个坐标为(xi,yi)和颜色ci. Arsen Lupin发明了一种设备,可以抓取平行x轴的一条线段下的所有珠宝而不触发警报, 唯一 ...

  3. CF235C 【Cyclical Quest】

    厚颜无耻的发一篇可能是全网最劣解法 我们发现要求给定的串所有不同的循环同构出现的次数,可以直接暴力啊 因为一个长度为\(n\)的串,不同的循环同构次数显然是不会超过\(n\)的,所以我们可以直接对每一 ...

  4. bzoj 2434 [Noi2011]阿狸的打字机——AC自动机

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2434 dfs AC自动机,走过的点权值+1,回溯的时候权值-1:走到询问的 y 串的节点,看 ...

  5. VI编辑器查找替换

    1.Vi下进行查找 VI命令模式下:输入“/要查找的词”回车就会进入查找,你可以按“n”查找下一个,按“N”查找上一个.类似查找命令“?”与“/”的区别是“/”为向下查找,“?”为向上查找. 2.Vi ...

  6. UML 类关系图(泛化,实现,依赖,关联(聚合,组合))

    UML的构造快包含3种:  (1) 事物(4种):结构事物,行为事物,分组事物,注释事物 (2) 关系(4种):泛化关系,实现关系,依赖关系,关联关系 (3) 图(10种):用例图,类图,对象图,包图 ...

  7. [USACO11OPEN]奶牛跳棋Cow Checkers(博弈论)

    题目描述 One day, Bessie decides to challenge Farmer John to a game of 'Cow Checkers'. The game is playe ...

  8. C/C++获取CPU等硬件信息&&屏幕截图

    打算练习Socket的时候用用,最近有点小事情,没时间继续完善,先把写的这些代码贴上来,有空了再完善一下. HardwareInfo.h #include <stdio.h> #inclu ...

  9. baidu 地图 鼠标移上显示标签 鼠标离开隐藏标签

    为了解决 label太多,文字会重叠看不清 所以提出这种办法 核心代码 1,创建的时候 将label设置为隐藏 2,通过百度地图监听事件 ,  mouseover或onmouseover 触发显示 3 ...

  10. mysql系列一

    学习mysql必备工具即安装mysql客户端:mysql安装教程在网上有很多,在此处就不在仔细说明: 下面将仔细介绍一下关于SQL语句: SQL语句:结构化查询语言(Structured Query ...