科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Oracle常用的OCI函数(五)

Oracle常用的OCI函数(五)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

单条查询 sql: select username,age from student where username=:p1; 如果此字段有可能有空值。

作者:builder.com.cn 2007年9月16日

关键字: 甲骨文 体系结构 数据库 ORACLE

  • 评论
  • 分享微博
  • 分享邮件


单条查询
sql: select username,age from student  where username=:p1;
如果此字段有可能有空值,则
hDefine = NULL;
swResult = OCIDefineByPos(stmtp &hDefine, errhp, 1, tstd.username, sizeof(tstd.username), SQLT_CHR, & sb2aInd[0], NULL, NULL, OCI_DEFAULT);
如果此字段没有空值,则
hDefine = NULL;
swResult = OCIDefineByPos(stmtp &hDefine, errhp, 1, tstd.username, sizeof(tstd.username), SQLT_CHR, NULL, NULL, NULL, OCI_DEFAULT);

 批量查询
select username,age from student  where age>30;
hDefine = NULL;
swResult = OCIDefineByPos(stmtp, &hDefine, errhp, 1, &tstd[0].username,
sizeof(tstd[0].usenmae), SQLT_CHR, NULL, NULL, NULL, OCI_DEFAULT);

swResult = OCIDefineArrayOfStruct(hDefine, errhp, sizeof(tstd[0]), 0, 0, 0);
11.提取结果
sword OCIStmtFetch (
OCIStmt     *stmtp,//语句句柄
                    OCIError    *errhp,
                    ub4         nrows, //从当前位置处开始一次提取的记录数,对于数据变量,可以>1,否则不能>1
                    ub2         orientation,//提取的方向:OCI_FETCH_NEXT
ub4         mode //OCI_DEFAULT
  )

eg
  while ((swResult=OCIStmtFetch stmtp errhp,1,OCI_FETCH_NEXT,OCI_DEFAULT)) != OCI_NO_DATA)
{
……
}

12.事务操作
开始一个事务
sword OCITransStart (
OCISvcCtx    *svchp,
                     OCIError     *errhp,
                     uword        timeout, //**
                     ub4          flags );
**注:
1. Timeout:
当flag=OCI_TRANS_RESUME:它表示还有多少秒事务将被激活
=OCI_TRANS_NEW: 事务响应的超时时间(秒)
2. Flags:指定一个新的事务还是已有事务
=OCI_TRANS_NEW:定义一个新的事务
=OCI_TRANS_RESUME

准备一个事务:
sword OCITransPrepare (
OCISvcCtx    *svchp,
                       OCIError     *errhp,
                       ub4          flags );//OCI_DEFAULT

sword OCITransForget (
OCISvcCtx     *svchp,
                      OCIError      *errhp,
                      ub4           flags );//OCI_DEFAULT

断开一个事务:
sword OCITransDetach (
OCISvcCtx    *svchp,
                      OCIError     *errhp,
ub4          flags );//OCI_DEFAULT

 提交一个事务:
sword OCITransCommit (
OCISvcCtx    *svchp,  //服务环境句柄
                             OCIError     *errhp,
                             ub4          flags ); //OCI_DEFAULT
回滚一个事务
sword OCITransRollback (
dvoid        *svchp,
                             OCIError     *errhp,
                             ub4          flags ); //OCI_DEFAULT


四. OCI数据类型与C语言数据类型对照表
表字段类型      OCI类型 C类型 备注
Number(N) SQLT_UIN  int 无符号整型
Number(N) SQLT_INT  int 有符号整型
Number(n,m) SQLT_FLT  float 符点数
Varchar2(N) Sqlt_chr  Char 字符串
Raw(N)   Sqlt_BIN 具体看不同的定义 二进制类型,多用于一个结构字段
DATE SQLT_DAT 无 最好转换成字符串或数字

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件