常用OCI函数使用说明(4)
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,
相关推荐:
- [高等教育]公司协助某村精准扶贫工作总结.doc
- [高等教育]高二生物知识点总结(全)
- [高等教育]苏教版数学三年级下册《解决问题的策略
- [高等教育]仪器分析课程学习心得
- [高等教育]2017年五邑大学数学与计算科学学院333
- [高等教育]人教版七年级下册语文第四单元测试题(
- [高等教育]2018年秋七年级英语上册Unit7Howmuchar
- [高等教育]2017年八年级下数学教学工作小结
- [高等教育]湖南省怀化市2019届高三统一模拟考试(
- [高等教育]四年级下册科学_基础训练及答案教材
- [高等教育]城郊煤矿西风井管路伸缩器更换施工安全
- [高等教育]昆八中20182019学年度上学期期末考试
- [高等教育]项目部各类人员任命书
- [高等教育]上市公司经营水务产业的模式
- [高等教育]人教版高二化学第一学期第三章水溶液中
- [高等教育]【中考物理第一轮复习资料】四.压强与
- [高等教育]金坑水电站报废改建工程机电设备更新改
- [高等教育]高中生物教学工作计划简易版
- [高等教育]2017年西华大学攀枝花学院(联合办学)44
- [高等教育]最新整理超短爆笑英文小笑话大全
- 优秀教师继续教育学习心得体会
- 阳历到阴历的转换
- 留守儿童教育案例分析
- 华师17春秋学期《玩教具制作与环境布置
- 测速传感器新型安装装置的现场应用
- 人教版小学数学三年级下册第四单元
- 创业个人意向书
- 山东省潍坊市2012年高考仿真试题(三)
- [恒心][好卷速递]四川省成都外国语学校
- 多少人错把好转反应当成了病情加重处理
- 中外广播电视史复习资料整理
- 江苏省扬州市江都区宜陵镇中学2014-201
- 工程造价专业毕业实习报告
- 广西师范学院心理与教育统计
- aympkrq基于 - asp的博客网站设计与开
- 建筑业外出经营相关流程操作(营改增后
- 人治 德治 法治
- [精华篇]常识判断专项训练题库
- 中国共产党为什么要实行民主集中
- 小学数学第三册第一单元试卷(A、B、C




