• 网络学院
  • 新手学堂
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
Oracle常用的OCI函数上
广告位
  站点:
  • 首 页
  • 最新软件
  • 最新文章
  • 国内软件
  • 国外软件
  • 汉化软件
  • 源码下载
  • 字体下载
Oracle常用的OCI函数上
软件发布 Oracle常用的OCI函数上
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回首页 | 文章首页 | 认证考试 | Oracle认证 | Oracle指导 | Oracle常用的OCI函数上

Oracle常用的OCI函数上

 

添加时间: 2008-4-28 23:04:10  作者: Oracle指导  阅读次数:68   来源: http://www.d9soft.com

 

 

       

一. Oracle oci工具包安装: 
$ORACLE_HOMEBIN:执行文件和help文件 
$ORACLE_HOMEOCIINCLUDE:头文件 
$ORACLE_HOMEOCILIBBC:  for Borlanf C++的OCI库 
$ORACLE_HOMEOCILIBMSVC:  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:数据被完整读入到指定的程序变量中 
>0:所读取的列数据长度大于程序变量的长度,则被截取,指示符变量值为所读取数据被截取前的实际长度

 

Oracle常用的OCI函数上(1) 第 [1] [2] [3] [4]  下一页

 

 

上下文章:

 

上一篇文章: 在MySQL中获得更好的全文搜索结果(4)完 下一篇文章: Oracle指导:Oracle学习笔记

相关文章:

  • 在ORACLE的存储过程中如何做简单的动态查询
  • Oracle下调数据库许可价格以适应多芯CPU
  • Oracle全球客户支持副总裁汤姆·舒尔滋演讲
  • Oracle中国前员工述说公司高层内部纷争史
  • Oracle发布免费数据库管理工具Raptor

相关软件:

  • DLL导出函数查看器 V1.3
  • OptionsOracle V1.3.1
  • DOS常用命令宝典-电子书
  • VB函数添加大师 V2.23
  • Oracle 8 故障解决手册(PDF)
  • Oracle WebServer 中文手册(CHM)

 

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

Oracle认证分类导航

  • Oracle动态
  • Oracle指导
  • Oracle题库

本类经典文章推荐

  • Oracle中关于逻辑备份与恢复
  • Oracle开发人员JAVA存储过程
  • 为数据库的表自动生成行号
  • Oracle中的OOP概念
  • 用java从oracle取数
  • 冷备份移植到另一台Solaris机器上
  • 如何将excel数据导入oracle中
  • Oracle10.2g安装记录
  • 数据库监控工具ForOraclev1.2
  • oracle双机群集系统

Oracle指导阅读排行

  • Oracle系统表查询
  • 实例:Oracle导出EXCEL文件
  • Oracle企业管理器(OEM 2.1)使用...
  • 实例:Oracle导出EXCEL文件
  • Tomcat+SQLServer连接池配置
  • 服务器和客户机是怎样连接的
  • 入门基础:连接常见错误及解决方法
  • ORACLE数据库简介
  • 如何将excel数据导入oracle中
  • 如何取出某一用户的密码 再原样改...

Oracle认证阅读总排行

  • Oracle系统表查询
  • 实例:Oracle导出EXCEL文件
  • Oracle企业管理器(OEM 2.1)使用...
  • 在ORACLE的存储过程中如何做简单的...
  • 实例:Oracle导出EXCEL文件
  • AIX下自动启动Oracle数据库与监听...
  • Tomcat+SQLServer连接池配置
  • 服务器和客户机是怎样连接的
  • 入门基础:连接常见错误及解决方法
  • ORACLE数据库简介

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有