上海网站建设  

 

 
首页 - 电子商务 - Solaris下PRO*C和OCI程序设计分析与比较3
 

Solaris下PRO*C和OCI程序设计分析与比较3

2008-1-18 15:18:21
2.3生成可执行文件
在Solaris平台下可通过命令方式对PRO*C源程序进行预编译,下列命令只列出了最常用的预编译选项:#proc iname=example.c INCLUDE=path CODE=ANSI_C MODE=ANSI CPP_SUFFIX=cc
SQLCHECK=SEMANTICS USERID=username/password@DBname
预编译后的example.cc文件就可以当作普通的C源文件来进行处理了。
#gcc -o exampled –I. -I/oracle/product/8.1.7/precomp/public example.cc
最终生成的exampled文件就是我们的可执行文件。
3 OCI程序设计
OCI(Oracle Call Interface)是由头文件和库函数等组成的一套Oracle数据库应用程序编程接口工具,OCI程序实质上就是用高级语言写的程序,其特点是内部含有对OCI子函数库的调用。
OCI程序对开发环境的要求相对较低,只要有C语言的OCI开发工具包和C编译器就可以,程序设计相比PRO*C复杂了点。
3.1创建和初始化OCI环境
首先要在源程序中包含OCI头文件:#include <oci.h>
OCI环境即OCI函数的工作环境,在调用其他函数之前必须先调用OCIInitialize()和OCIEnvInit()函数创建和初始化OCI环境,其他OCI函数要在这个环境中才能执行。
先定义变量:OCIEnv **m_envhp;
OCIError *m_errhp;
OCIServer *m_srvhp;
OCISvcCtx *m_svchp;
OCIStmt *m_stmthp;
OCIInitialize((ub4) OCI_DEFAULT, (dvoid *)0, (dvoid * (*)(dvoid *, size_t)) 0,
(dvoid * (*)(dvoid *, dvoid *, size_t))0, (void (*)(dvoid *, dvoid *)) 0 );
OCIEnvInit((OCIEnv **)&m_envhp, OCI_DEFAULT, (size_t) 0, (dvoid **) 0 );
其中m_envhp为输出参数,是一个指向OCI环境句柄的指针,OCI_DEFAULT 是OCI环境的初始化模式。OCIEnvInit()函数中的size_t类型变量为分配给用户的内存数量,dvoid **类型变量指向用户的内存区域,该区域的大小等于size_t类型变量。
OCI函数中,大量使用OCI定义的数据类型和宏,其定义可参考$ORACLE_HOME/rdbms/demo目录下的oci.h头文件。
3.2申请句柄
句柄是指向OCI库所分配的内存区域的指针,该内存区域中的数据由OCI库维护,应用程序可通过句柄访问其中的数据。下面是应用程序中最常用的几个句柄:
OCIHandleAlloc( (dvoid *)m_envhp, (dvoid **)&m_errhp, OCI_HTYPE_ERROR,
(size_t) 0, (dvoid **) 0);
OCIHandleAlloc( (dvoid *)m_envhp, (dvoid **)&m_srvhp, OCI_HTYPE_SERVER,
(size_t) 0, (dvoid **) 0);
OCIHandleAlloc( (dvoid *)m_envhp, (dvoid **)&m_svchp, OCI_HTYPE_SVCCTX,
(size_t) 0, (dvoid **) 0);
OCIHandleAlloc( (dvoid *)m_envhp, (dvoid **)&m_stmthp, OCI_HTYPE_STMT,
(size_t) 0, (dvoid **)0);
其中m_errhp为新申请的句柄,m_envhp为它的父环境句柄,OCI_HTYPE_ERROR为句柄类型,表示这是一个错误报告句柄,OCI_HTYPE_SERVER表示服务器句柄,OCI_HTYPE_SVCCTX表示服务环境句柄,OCI_HTYPE_STMT表示语句句柄。
存储在句柄中的数据称为句柄属性,所有OCI句柄都具有属性,可以调用OCIAttrGet()和OCIAttrSet()函数来读取、设置句柄属性。
责任编辑:
相关文章
 
联系我们
公司电话:
(021)-51872701
(021)-51302668
(021)-51302669
公司传真: (021)-51302669-21
公司网址: http://www.021sale.com.cn
 
最新更新
>> 这些变量是应用程序与Oracle通信的桥梁,应用程序的输..
>> 摘要 文章对Solaris平台下,开发基于Oracle数据库的C程..
>> Google的补充材料问题是今年比较受关注的SEO问题。以前..
>> 在Google搜索结果中除了列出网页的网页快照,类似网页..
>> 八. 联合查询 UNION运算可以把多个查询的结果合并到一..
   
  Copyright © 2007 上海旭强信息科技有限公司版权所有