常用OCI函数使用说明
常用OCI函数使用说明
一. Oracle oci工具包安装:
$ORACLE_HOME\\BIN:执行文件和help文件 $ORACLE_HOME\\OCI\\INCLUDE:头文件
$ORACLE_HOME\\OCI\\LIB\\BC: for Borlanf C++的OCI库
$ORACLE_HOME\\OCI\\LIB\\MSVC: for MS Visual C++的OCI库
如果是unix下,对于ORACLE8i,则OCI库在$ORACLE_HOME/lib下,如果是9i,则在
$ORACLE_HOME/lib32下,库文件名一般为libclntsh.so
1. 创建OCI环境即创建和初始化OCI工作环境,其他的OCI函数需要OCI环境才
能执行。
2. 需要申请的句柄类型:
OCI环境句柄: OCI_HTYPE_ENV—它定义所有OCI函数的环境调用环境,是其他
句柄的父句柄。(由OCIEnvInit或OCIEnvCreate生成)
错误句柄:OCI_HTYPE_ERROR—作为一些OCI函数的参数,用来记录这些OCI函数
操作过程中所产生的错误,当有错误发生时,可用COIErrorGet()来读取错误句
柄 中记录的错误信息。
服务器环境句柄:OCI_HTYPE_SVCCTX—定义OCI调用的服务器操作环境,它包含
服务器、用户会话和事务三种句柄。
服务器句柄:OCI_HTYPE_SERVER—标识数据源,它转换为与服务器的物理连接 。
用户会话句柄:OCI_HTYPE_SESSION—定义用户角色和权限及OCI调用的执行环
境。
事务句柄:OCI_HTYPE_TRANS—定义执行SQL操作的事务环境,事务环境中包含
用户的会话状态信息。
语句句柄:OCI_HTYPE_STMT—是一个标识SQL语句或PL/SQL块,以及其相关属性
的环境。
Bind/Define句柄:属于语句句柄的子句柄,由OCI库隐式自动生成。用户不需
要自己再申请,OCI输入变量存储在bind 句柄中,输出变量存储在定义句柄中
3. 句柄属性包括:
服务器环境句柄属性:(OCI_HTYPE_SVCCTX)
OCI_ATTR_SERVER—设置/读取服务环境的服务器环境属性 OCI_ATTR_SESSION—设置/读取服务环境的会话认证环境属性
OCI_ATTR_TRANS—设置/读取服务环境的事务环境属性 用户会话句柄属性:(OCI_HTYPE_SESSION)
OCI_ATTR_USERNAME—设置会话认证所使用的用户名 OCI_ATTR_PASSWORD—设置会话认证所使用的用户口令 服务器句柄:(OCI_HTYPE_SEVER)
OCI_ATTR_NOBLOCKING_MODE—设置/读取服务器连接:=TRUE时服务器连接设置
为非阻塞方式
语句句柄:(OCI_HTYPE_STMT)
OCI_ATTR_ROW_COUNT—只读,为当前已处理的行数,其default=1 OCI_ATTR_STMT_TYPE—读取当前SQL语句的类型: Eg : OCI_STMT_BEGIN
OCI_STMT_SELECT OCI_STMT_INSERT OCI_STMT_UPDATE OCI_STMT_DELETE
OCI_ATTR_PARAM_COUNT—返回语句选择列表中的列数 4. 关于输出变量定义:如果在语句执行前就知道select语句的选择列表结构
,则定义输出操作可在调用 OCISTMTExecute前进行,如果查询语句的参数为用
户动态输入的,则必须在执行后定义。 5. OCI函数返回值:
OCI_SUCCESS –函数执行成功 (=0)
OCI_SUCCESS_WITH_INFO –执行成功,但有诊断消息返回,可能是警告信息 OCI_NO_DATA—函数执行完成,但没有其他数据 OCI_ERROR—函数执行错误
OCI_INVALID_HANDLE—传递给函数的参数为无效句柄,或传回的句柄无效 OCI_NEED_DATA—需要应用程序提供运行时刻的数据
OCI_CONTINUE—回调函数返回代码,说明回调函数需要OCI库恢复其正常的处理
操作
OCI_STILL_EXECUTING—服务环境建立在非阻塞模式,OCI函数调用正在执行中 。
6. OCI连接有二种方式:Blocking(阻塞方式)和non_Blocking(非阻塞方式),
阻塞方式就是当调用 OCI操作时,必须等到此OCI操作完成后服务器才返回客户
端相应的信息,不管是成功还是失败。非阻塞方式是当客户端提交OCI操作给服
务器后,服务器立即返回OCI_STILL_EXECUTING信息,而并不等待服务端的操作
完成。
对于non-blocking方式,应用程序若收到一个OCI函数的返回值为
OCI_STILL_EXECUTING时必须再次对每一个OCI函数的返回值进行判断,判断其
成功与否。
可通过设置服务器属性为OCI_ATTR_NONBLOCKING_MODE来实现。系统默认方式
为阻塞模式.
7. OCI函数设置的模式有:
OCI_DEFUALT:使用OCI默认的环境 OCI_THREADED:线程环境下使用OCI OCI_OBJECT:对象模式 OCI_SHARED:共享模式 OCI_EVENTS OCI_NO_UCB
OCI_ENV_NO_MUTEX:非互斥访问模式
其中模式可以用逻辑运算符进行迭加,将函数设置成多多种模式:如
mode=OCI_SHREADED| OCI_OBJECT
8. 当应用进程与服务器断开连接时,程序没有使用OCITransCommit()进行事
务的提交,则所有活动的事务会自动回滚。 9. OCI重定义数据类型
typedef unsigned char ub1; typedef signed char sb1;
typedef unsigned short ub2; typedef signed short sb2; typedef unsigned int ub4; typedef signed int sb4;
typedef ub4 duword; typedef sb4 dsword; typedef dsword dword;
10. 在SQL语句准备后,可以用OCIAttrSet(0设置该语句的类型属性
OCI_ATTR_STMT_TYPE,以后可读取语句属性,根据属性分别进行处理。
11. 批量绑定输入和定义输出参数:将数据存入一个静态数据组中。一次执行
可以提交或读取多行记录值。 12. 结合占位符和指示器变量:
占位符:在程序中,一些SQL语句需要在程序运行时才能确定它的语句数据,在
设计时可用一个占位符来代替,当程序运行时,在它准备好语句后,必须为每
个占位符指定一个变量,即将占位符与程序变量地址结合,执行时,Oracle就
从这些变量中读取数据,并将它们与SQL语句一起传递给Oracle服务器执行。
OCI结合占位符时,它将占位符与程序变量关联起来,并同时要指出程序变量的
数据类型和数据长度。
如:select * from test where name=:p1 and age>:p2 :p1和:p2为占位符
指示器变量:由于在Oracle中,列值可以为NULL,但在C语言中没有NULL值,为
了能使OCI程序表达NULL列值,OCI函数允许程序为所执行语句中的结合变量同
时关联一个指示符变量或指示符变量数组,以说明所结合的占位符是否为NULL
或所读取的列值是否为NULL,以及所读取的列值是否被截取。
除SQLT_NTY(SQL Named DataType)外,指示符变量或指示符变量数组的数据
类型为sb2,其值说明: 作为输入变量时:(如insert ,update语句中)
=-1:OCI程序将NULL赋给Oracle表的列,忽略占位符结合的程序变量值 >=0:应用程序将程序变量值赋给指定列 作为输出变量时:(如select语句中)
=-2:所读取的列数据长度大于程序变量的长度,则被截取。 =-1:所读取的值为NULL,输出变量的值不会被改变。 =0:数据被完整读入到指定的程序变量中 …… 此处隐藏:2791字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [高等教育]公司协助某村精准扶贫工作总结.doc
- [高等教育]高二生物知识点总结(全)
- [高等教育]苏教版数学三年级下册《解决问题的策略
- [高等教育]仪器分析课程学习心得
- [高等教育]2017年五邑大学数学与计算科学学院333
- [高等教育]人教版七年级下册语文第四单元测试题(
- [高等教育]2018年秋七年级英语上册Unit7Howmuchar
- [高等教育]2017年八年级下数学教学工作小结
- [高等教育]湖南省怀化市2019届高三统一模拟考试(
- [高等教育]四年级下册科学_基础训练及答案教材
- [高等教育]城郊煤矿西风井管路伸缩器更换施工安全
- [高等教育]昆八中20182019学年度上学期期末考试
- [高等教育]项目部各类人员任命书
- [高等教育]上市公司经营水务产业的模式
- [高等教育]人教版高二化学第一学期第三章水溶液中
- [高等教育]【中考物理第一轮复习资料】四.压强与
- [高等教育]金坑水电站报废改建工程机电设备更新改
- [高等教育]高中生物教学工作计划简易版
- [高等教育]2017年西华大学攀枝花学院(联合办学)44
- [高等教育]最新整理超短爆笑英文小笑话大全
- 优秀教师继续教育学习心得体会
- 阳历到阴历的转换
- 留守儿童教育案例分析
- 华师17春秋学期《玩教具制作与环境布置
- 测速传感器新型安装装置的现场应用
- 人教版小学数学三年级下册第四单元
- 创业个人意向书
- 山东省潍坊市2012年高考仿真试题(三)
- [恒心][好卷速递]四川省成都外国语学校
- 多少人错把好转反应当成了病情加重处理
- 中外广播电视史复习资料整理
- 江苏省扬州市江都区宜陵镇中学2014-201
- 工程造价专业毕业实习报告
- 广西师范学院心理与教育统计
- aympkrq基于 - asp的博客网站设计与开
- 建筑业外出经营相关流程操作(营改增后
- 人治 德治 法治
- [精华篇]常识判断专项训练题库
- 中国共产党为什么要实行民主集中
- 小学数学第三册第一单元试卷(A、B、C




