就是把表的number列, 和程序中char*表示的string关联起来。
现在我可以从表中把number列select出,成为char*类型的字符串。但是尝试insert时候,试图把char*类型字符串直接OCIBindByName时候,OCIStmtExec却不正确。// select 程序, 用SQLT_CHR指定程序变量类型为character string。
sprintf(sSQL,"select row_id, row_num from t_num where row_id=:x");
rc = OCIDefineByPos(p_sql, &p_dfn, p_err, 2, (dvoid *) &m_rownum,
sizeof(m_rownum), SQLT_CHR, (dvoid *) 0, (ub2 *)0,
(ub2 *)0, OCI_DEFAULT);
// insert 程序, OCIBindByName时,同样用SQLT_CHR指定类型从char*到Number的转换,却不正确。
从文档看,应该支持这样的直接转换阿? 转换格式需要制定参数吗? 为什么select时候就不用格式的参数呢?请高手指教,最好给我一点代码示例。谢谢
现在我可以从表中把number列select出,成为char*类型的字符串。但是尝试insert时候,试图把char*类型字符串直接OCIBindByName时候,OCIStmtExec却不正确。// select 程序, 用SQLT_CHR指定程序变量类型为character string。
sprintf(sSQL,"select row_id, row_num from t_num where row_id=:x");
rc = OCIDefineByPos(p_sql, &p_dfn, p_err, 2, (dvoid *) &m_rownum,
sizeof(m_rownum), SQLT_CHR, (dvoid *) 0, (ub2 *)0,
(ub2 *)0, OCI_DEFAULT);
// insert 程序, OCIBindByName时,同样用SQLT_CHR指定类型从char*到Number的转换,却不正确。
从文档看,应该支持这样的直接转换阿? 转换格式需要制定参数吗? 为什么select时候就不用格式的参数呢?请高手指教,最好给我一点代码示例。谢谢
解决方案 »
- 程序运行起初没有问题,过几小时后数据库报错,报错信息如下
- 存储过程调用JAVA方法报no method错误,求高手!!!
- 一串数字,如何取后4位不为 6 8 9 的字符串,请支个招,谢谢
- 求助:在Oracle数据库中按拼音首字母查询,请高手指点
- 请问这个存储过程为什么不取默认值?
- 【高分请教】关于SQL语句的写法!
- 关于游标变量的测试问题
- 在redhat7.2上怎么通过Linux上的exp工具从win2k的oracle8.1.7导出数据文件export.dmp文件呢?
- 如何用SQL语句解决这样的问题?急!
- 在哪里修改ORACLE的管理员密码
- 跨oracle和sqlserver数据查询问题~
- 复杂的求和问题!!!
如果还有什么不懂的话,建议详细琢磨OCIDefineByPos()和OCIBindByName()的各种参数含义。比如:
OCIBindByName( Stmthp1, &bndp, pFErrorhp, (text *)":fd1", -1,
&v_fd1, (sword)sizeof(v_fd1), SQLT_STR, (dvoid *) 0,
(ub2 *)0, (ub2) 0, (ub4)0, (ub4 *)0, OCI_DEFAULT);