OCI 程序能把number列bind, define成char*吗?

benh 2008-10-13 02:15:15
就是把表的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时候就不用格式的参数呢?

请高手指教,最好给我一点代码示例。谢谢
...全文
83 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
sailing0123 2008-10-14
  • 打赏
  • 举报
回复
用SQLT_CHR是可以的,但其它参数需要设置,特别是数据的长度,如果数据长度动态变化,不便于用SQLT_CHR.

建议使用SQLT_STR来绑定,注意末尾要比实际长度多一位,\0的位子。
如果还有什么不懂的话,建议详细琢磨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);
下载代码方式:https://pan.quark.cn/s/a4b39357ea24 Node.js作为一个运行环境,其基础是Chrome的V8引擎,它最突出的优势在于能够支持JavaScript代码在服务器端执行,从而为网络应用程序创造了一个全新的执行平台。在Node.js生态中,文件系统的相关操作由fs模块承担,而fs.readFile作为其中的关键方法,专门用于实现文件内容的获取。本文旨在全面阐释fs.readFile方法的相关信息,包括其功能说明、语法结构、参数配置、应用范例以及源代码实现,以供那些需要在Node.js环境中进行文件操作的程序员参考。 fs.readFile方法具备异步特性,意味着它在执行文件读取任务时不会中断当前程序的运行流程,使得程序的其他部分能够同步执行。该方法的工作流程是:一旦调用,Node.js会立即反馈执行信号,然后在后台线程中执行文件读取任务。当文件读取任务完后,Node.js会通过一个预设的回调函数来处理读取结果或识别错误。 fs.readFile方法的语法结构如下: fs.readFile(path[, options], callback) - path:一个必须的参数,其数据类型可以是字符串、Buffer或Uint8Array,用于指示文件的具体位置或文件描述符。 - options:一个可选参数,形式为一个对象,用于设定文件的编码格式及打开模式。该对象中可以包含encoding(字符编码,默认值为null,此时返回Buffer对象)和flag(文件打开模式,默认值为r,代表只读模式)。 - callback:一个必须的回调函数,在文件读取任务结束后被触发。若读取过程中出现错误,err参数将包含错误详情,否则为n...

17,134

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧