我错在哪里?SetDataBuffer for DATE.

Where am I wrong? SetDataBuffer for DATE

本文关键字:DATE for SetDataBuffer 我错在哪里      更新时间:2023-10-16

我想使用以下代码在oracle中为DATE进行数组提取。它可以正常编译并正确导出所有其他数据类型,但 DATE 类型除外。该程序显示"ora-32146 无法在空日期执行操作"。

有人能看出我错在哪里吗?

    Statement *stmt = conn->createStatement("SELECT AGE,CASH2, BIRTHDATE from myTable2"); /*, CASH1, CASH2, BIRTHDATE*/
    //stmt->setMaxParamSize(1,sizeof(Number));
    ResultSet *rs=stmt->executeQuery();
    string myName[400];
    int myAge[400];
    double myCash1[400];
    double myCash2[400];
    oracle::occi::Date myBirthDate[400];
    //rs->setDataBuffer(1,myName,OCCI_SQLT_STR,sizeof(string));
    rs->setDataBuffer(1,myAge,OCCIINT,sizeof(int));
    rs->setDataBuffer(2, myCash2, OCCIBDOUBLE, sizeof(double),NULL);
    rs->setDataBuffer(3, myBirthDate,OCCI_SQLT_DATE, sizeof(oracle::occi::Date),NULL);
    while (rs->next(200)==ResultSet::DATA_AVAILABLE)
    {
        //cout << "Exporting batch..." << endl;
        for(size_t i=0;i<rs->getNumArrayRows();i++)
        {
            //cout << myName[i] << endl;
            cout << myAge[i] << endl;
            //cout << myCash1[i] << endl;
            cout << myCash2[i] << endl;
            int y;
            unsigned int m,d,h,mm,s;
            myBirthDate[i].getDate(y,m,d,h,mm,s);
            cout << y <<"-"<<m<<"-"<<s << endl;
        }
    }

通了。

使用 rs->setDataBuffer(3, myBirthDate,OCCI_SQLT_DAT, 7,NULL);

一切正常。

没有关于OCCI的好文件...