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

Oracle常用的OCI函数中

添加时间: 2008-4-27 21:49:32  作者: Oracle指导  阅读次数:73   来源: http://www.d9soft.com

       

7.准备SQL语句 
sword OCIStmtPrepare ( 
OCIStmt       *stmtp,//语句句柄   
                OCIError      *errhp, 
                      CONST text    *stmt,  //SQL语句 
                      ub4           stmt_len,   //语句长度 
                      ub4           language,  //语句的语法格式=OCI_NTV_SYNTAX 
ub4           mode //=OCI_DEFAULT 
); 
eg: 
char sSQL[1024]; 
sprintf(sSQL, “select table_name from user_tables”); 
swResult = OCIStmtPrepare(stmtp errhp,  (CONST OraText*)sSQL, strlen(sSQL), OCI_NTV_SYNTAX, OCI_DEFAULT); 
if(swResult != OCI_SUCCESS && swResult != OCI_SUCCESS_WITH_INFO) 
return FALSE; 
 

8. 绑定输入参数 
OCIBindArrayOfStruct() Set skip parameters for static array bind ,数组绑定,一般用于批量操作 
OCIBindByName() Bind by name  按名绑定 
OCIBindByPos() Bind by position  按位置绑定,建议一般按此方式绑定 
OCIBindDynamic() Sets additional attributes after bind with OCI_DATA_AT_EXEC mode   
OCIBindObject() Set additional attributes for bind of named data type 
注: 
OCIBindArrayOfStruct必须先用OCIBindByPos初始化,然后在OCIBindArrayOfStruct中定义每个参数所跳过的字节数。 
如: 
存储方式: 
 
第一条记录第二条记录 N 

 SkipPara(实际就是结构体长度,即本次所有列的长度和) 
 
sword OCIBindByName ( 
OCIStmt       *stmtp, //语句句柄 
                OCIBind       **bindpp,//结合句柄,=NULL 
                OCIError      *errhp, 
                CONST text    *placeholder,//占位符名称 
                sb4           placeh_len, //占位符长度 
                dvoid         *valuep, //绑定的变量名 
                sb4           value_sz, //绑定的变量名长度 
                ub2           dty,  //绑定的类型 
                dvoid         *indp, //指示符变量指针(sb2类型),单条绑定时为NULL, 
                ub2           *alenp, //说明执行前后被结合的数组变量中各元素数据实际的长度,单条绑定时为NULL 
                ub2           *rcodep,//列级返回码数据指针,单条绑定时为NULL 
                ub4           maxarr_len, //最多的记录数,如果是单条绑定,则为0 
                ub4           *curelep, //实际的记录数,单条绑定则为NULL 
                ub4           mode //=OCI_DEFAULT 
); 
sword OCIBindByPos ( OCIStmt      *stmtp, 
                    OCIBind      **bindpp, 
                    OCIError     *errhp, 
                    ub4          position,// 绑定的位置 
                    dvoid        *valuep, 
                    sb4          value_sz, 
                    ub2          dty, 
                    dvoid        *indp, 
                    ub2          *alenp, 
                    ub2          *rcodep, 
                    ub4          maxarr_len, 
                    ub4          *curelep, 
                    ub4          mode ); 
sword OCIBindArrayOfStruct ( 
OCIBind     *bindp,//绑定的结构句柄,由OCIBindByPos定义 
                OCIError    *errhp, 
                ub4         pvskip, //下一列跳过的字节数** 
                ub4         indskip,//下一个指示器或数组跳过的字节数 
                ub4         alskip, //下一个实际值跳过的字节数 
                ub4         rcskip //下一个列级返回值跳过的字节数 
); 

例: 
sword     swResult; 
OCIBind*  hBind; 
Ub4 rec_num; 
Sql:  insert into student values (:p1,:p2) 
单条绑定: 
hBind = NULL; 
swResult = OCIBindByPos(stmtp &hBind, errhp,1,ststd.tname, 
sizeof(ststd.tname), SQLT_CHR, NULL, 
NULL,NULL,0, NULL, OCI_DEFAULT); 

批量取数据,一次取100条 
Sql:  select username,age from student where username=:p1 and age=:p2 
hBind = NULL; 
swResult = OCIBindByPos(stmtp &hBind, errhp,1,tstd[0].tname, 
sizeof(tstd[0].tname), SQLT_CHR, &tstdInd.sb2_usernmae[0], 
&tstdLen.ub2_username[0],&tstdRet.ub2_username[0],100, &rec_num, OCI_DEFAULT); 
swResult = OCIBindArrayOfStruct(hBind, errhp,sizeof(tstd [0]), sizeof(sb2), sizeof(ub2), sizeof(ub2)); 
9.执行SQL语句 
sword OCIStmtExecute ( 
OCISvcCtx           *svchp,  //服务环境句柄 
                      OCIStmt             *stmtp,  //语句句柄 
                      OCIError            *errhp, 
                      ub4                 iters, // ** 
                      ub4                 rowoff, //** 
                      CONST OCISnapshot   *snap_in, 
                      OCISnapshot         *snap_out, 
                      ub4                 mode //** 
); 
**注: 
1. iters:对于select语句,它说明一次执行读取到buffer中的记录行数,如果不能确定select语句所返回的行数,可将iters设置为0,而对于其他的语句,iters表示这些语句的执行次数,此时iters不能为0。 
2. rowoff:在多行执行时,该参数表示从所结合的数据变量中的第几条记录开始执行(即记录偏移量)。 
3. mode:=OCI_DEFAULT:default模式 
=OCI_DESCRIBE_ONLY:描述模式,只返回选择列表的描述信息,而不执行语句 
=OCI_COMMIT_ON_SUCCESS:自动提交模式,当执行成功后,自动提交。 
=OCI_EXACT_FETCH:精确提取模式。 
=OCI_BATCH_ERRORS:批错误执行模式:用于执行数组方式的操作,在此模式下,批量insert ,update,delete时,执行过程中任何一条记录错误不会导致整个insert ,update,delete失败,系统自动会收集错误信息,而在非批错误方式下,其中的任何一条记录错误,将会导致整个操作失败。

Eg: 
执行一次 
swResult = OCIStmtExecute(svchp, stmtp,  errhp;, 
                     1, 0, NULL, NULL, OCI_DEFAULT); 
批量执行100次: 
swResult = OCIStmtExecute(svchp, stmtp,  errhp;, 
                     100, 0, NULL, NULL, OCI_DEFAULT); 
10.定义输出变量 
  
OCIDefineArrayOfStruct()   Set additional attributes for static array define   
OCIDefineByPos()   Define an output variable association   
OCIDefineDynamic()   Sets additional attributes for define in OCI_DYNAMIC_FETCH mode   
OCIDefineObject()   Set additional attributes for define of named data type   
sword OCIDefineByPos ( 
OCIStmt     *stmtp, //语句句柄 
                      OCIDefine   **defnpp,//定义句柄—用于数组变量 
                      OCIError    *errhp, 
                      ub4         position,//位置序号(从1 开始) 
                      dvoid       *valuep, //输出的变量名 
                      sb4         value_sz, //变量长度 
                      ub2         dty,  //数据类型 
                      dvoid       *indp, //指示器变量/指示器变量数组,如果此字段可能存在空值,则要指示器变量,否则单条处理时为NULL 
                      ub2         *rlenp, //提取的数据长度 
                      ub2         *rcodep, //列级返回码数组指针 
ub4         mode //OCI_DEFAULT 
); 

sword OCIDefineArrayOfStruct ( 
OCIDefine   *defnp,//由OCIDefineByPos定义的句柄 
                OCIError    *errhp, 
ub4         pvskip, //下一列跳过的字节数,一般就是结构的大小 
                ub4         indskip,//下一个指示器或结构跳过的字节数,=0 
                ub4         rlskip, //下一个实际值跳过的字节数,=0 
                ub4         rcskip //下一个列列级返回值跳过的字节数,=0 
); 
sword OCIDefineDynamic ( 
OCIDefine   *defnp, 
                        OCIError    *errhp, 
                        dvoid       *octxp, 
                        OCICallbackDefine       (ocbfp)(/*_ 
                                 dvoid          *octxp, 
                                 OCIDefine      *defnp, 
                                 ub4            iter, 
                                 dvoid          **bufpp, 
                                 ub4            **alenpp, 
                                 ub1            *piecep, 
                                 dvoid          **indpp, 
                                 ub2            **rcodep _*/)  ); 
sword OCIDefineObject ( OCIDefine       *defnp, 
                       OCIError        *errhp, 
                       CONST OCIType   *type, 
                       dvoid           **pgvpp, 
                       ub4             *pvszsp, 
                       dvoid           **indpp, 
                       ub4             *indszp );

 

上下文章:

 

上一篇文章: 创建隐藏IP地址的最后一项的函数 下一篇文章: Oracle常用的OCI函数下

相关文章:

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

相关软件:

  • 函数图像作图器 1.0
  • Ecora Enterprise Auditor for Oracle-破解补丁 Cracked v3_6_5185
  • DLL导出函数查看器 V1.3
  • OptionsOracle V1.3.1
  • DOS常用命令宝典-电子书
  • VB函数添加大师 V2.23

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • 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常用的OCI函数上
  • Oracle企业管理器(OEM 2.1)使用...
  • Tomcat+SQLServer连接池配置
  • 如何将excel数据导入oracle中
  • 如何取出某一用户的密码 再原样改...
  • 实例:Oracle导出EXCEL文件
  • 案例学习Oracle错误:ORA-00604
  • 案例学习Oracle错误:ORA-00060

Oracle认证阅读总排行

  • Oracle系统表查询
  • 实例:Oracle导出EXCEL文件
  • Oracle常用的OCI函数上
  • 在ORACLE的存储过程中如何做简单的...
  • Oracle企业管理器(OEM 2.1)使用...
  • Tomcat+SQLServer连接池配置
  • 如何将excel数据导入oracle中
  • AIX下自动启动Oracle数据库与监听...
  • 如何取出某一用户的密码 再原样改...
  • 实例:Oracle导出EXCEL文件

广告位置

字母检索 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 第九软件网 版权所有