教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 高等教育 >

常用OCI函数使用说明(4)

来源:网络收集 时间:2026-05-15
导读: 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. 绑定输入参数

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 pos …… 此处隐藏:1422字,全部文档内容请下载后查看。喜欢就下载吧 ……

常用OCI函数使用说明(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/607794.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)