otl连接数据库时,取number类型数据时,需要to_char,为何?
问题描述:
使用OTL的pro*c方法连接Oracle数据库时,取NUMBER 数据类型,报错。
将NUMBER数据to_char转为字符串时,可以取出。详见下面部分代码。
即:
环境:
AIX Version 6.1!
数据库:/oracle9i/app/oracle/product/9.2.0
使用OTL的pro*c方法连接Oracle数据库时,取NUMBER 数据类型,报错。
将NUMBER数据to_char转为字符串时,可以取出。详见下面部分代码。
即:
sprintf(sqlBuf,"SELECT to_char(CTRL_FLAG) FROM cct_business_ctrl where op_code='8000' and ctrl_no=10001 ");求大神解释?
环境:
AIX Version 6.1!
数据库:/oracle9i/app/oracle/product/9.2.0
部分代码如下:
OCIEnv* envhp; /*OCI environment handle*/ OCISvcCtx* svchp; /*OCI Service context handle*/ char sqlBuf[INTER_SQLBUF_LEN]; int ctrl_flag=0; char sctrl_flag[2]; memset(sctrl_flag,0x0,sizeof(sctrl_flag)); otl_nocommit_stream otl_sql_handle; if(SQLEnvGet((dvoid *)context,&envhp)){ sprintf(inter_pubinfo->ErrMsg,"get an OCI formatted environment handle from the primary connection Error[SQLEnvGet(0,&envhp)],Please Check."); return -1; } if(SQLSvcCtxGet((dvoid *)context,(text *) NULL,(ub4) 0,&svchp)){ ... return -1; } otl_connect otl_dbcon; memset(inter_pubinfo,0,sizeof(INTER_PUBINFO_TYPE)); inter_pubinfo->otlcon=&otl_dbcon; otl_connect::otl_initialize(); try{ otl_dbcon.rlogon(envhp,svchp); memset(sqlBuf,0,sizeof(sqlBuf)); /*sprintf(sqlBuf,"SELECT CTRL_FLAG FROM cct_business_ctrl where op_code='8000' and ctrl_no=10001 "); 取不出数据,注:CTRL_FLAG 是 NUMBER(1) 数据类型*/ sprintf(sqlBuf,"SELECT to_char(CTRL_FLAG) FROM cct_business_ctrl where op_code='8000' and ctrl_no=10001 "); //可以取出数据 otl_sql_handle.open(1,sqlBuf,otl_dbcon); otl_sql_handle>>sctrl_flag; if(0 == otl_sql_handle.get_rpc()){ printf("取标示错误,请检查!"); otl_sql_handle.close(); return -1; } otl_sql_handle.close(); ctrl_flag = atoi(sctrl_flag); //......
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论