我要通过OCI向oracle中插入数据。可我有一个表中有一列可以为空,此变量名为n17,绑定如下:OCIBindByName(stmthp, &bnd1p, errhp, (text *) ":n17",-1, (dvoid *) &n17, (sb4) sizeof(n17),SQLT_FLT, (dvoid *) 0, (ub2 *) 0, (ub2 *) 0,(ub4) 0, (ub4 *) 0, OCI_DEFAULT)。
请问上述绑定有问题吗?另外,向此列插入null,具体应该怎么做?指示器变量应该怎么用啊?
初次接触OCI,望大家多多指教。
请问上述绑定有问题吗?另外,向此列插入null,具体应该怎么做?指示器变量应该怎么用啊?
初次接触OCI,望大家多多指教。
解决方案 »
- ORACLE数据导出问题,急用,万分感谢!
- sql语句求解
- oracle11g+win7:ORA-12154: TNS:could not resolve the connect identifier specified
- 我的数据库怎么了?
- 求SQL语句计算问题
- 如何在 触发器 中 操作 BLOB 列 ?
- 在PL/SQL中有没有什么好的方法可以又快又准确地知道同一个用户下表与表之间的主从关系
- 哪位老大能留qq啊,我这两天刚开始学,有很多弱智的问题要问啊!好急
- 急急急,在redhat linux 9 初装oracle 9i时有关数据集的问题
- 一个有意思的东东
- 大数据量查询,3种sql语句,为什么执行结果跟书上以及网上说的不一样呢?
- Oracle建表问题
由于在Oracle中,列值可以为NULL,但在C语言中没有NULL值,为了能使OCI程序表达NULL列值,OCI函数允许程序为所执行语句中的结合变量同时关联一个指示符变量或指示符变量数组,以说明所结合的占位符是否为NULL或所读取的列值是否为NULL,以及所读取的列值是否被截取。 除SQLT_NTY(SQL Named DataType)外,指示符变量或指示符变量数组的数据类型为sb2,其值说明:
作为输入变量时:(如insert ,update语句中)
=-1:OCI程序将NULL赋给Oracle表的列,忽略占位符结合的程序变量值
>=0:应用程序将程序变量值赋给指定列
作为输出变量时:(如select语句中)
=-2:所读取的列数据长度大于程序变量的长度,则被截取。
=-1:所读取的值为NULL,输出变量的值不会被改变。
=0:数据被完整读入到指定的程序变量中
>0:所读取的列数据长度大于程序变量的长度,则被截取,指示符变量值为所读取数据被截取前的实际长度
OCIBindByName(stmthp, &bnd1p, errhp, (text *) ":n17",-1, (dvoid *) &n17, (sb4) sizeof(n17),SQLT_FLT, (dvoid *) 0, (ub2 *) 0, (ub2 *) 0,(ub4) 0, (ub4 *) 0, OCI_DEFAULT)
改为
OCIBindByName(stmthp, &bnd1p, errhp, (text *) ":n17",-1, (dvoid *) &n17, (sb4) sizeof(n17),SQLT_FLT, (dvoid *) -1, (ub2 *) 0, (ub2 *) 0,(ub4) 0, (ub4 *) 0, OCI_DEFAULT)
就可以了?
有时候编程的快乐在于经历数次失败后才获得的成功。