可以转换字符串,然后取值的时候取出字符串后再转换会INT64

解决方案 »

  1.   

    这种方法我也考虑过,不过想想不太方便,毕竟oci 直接提供了方法吧。
    不过我用:
     hOciHandle.errCode =OCINumberFromInt(hOciHandle.hErr,value,sizeof(__int64),OCI_NUMBER_SIGNED,(OCINumber*)&number);
    doError(hOciHandle.errCode);
    这种转换后再传进去也是失败。
      

  2.   

    直接拼写SQL, 不用bind方式。
      

  3.   


    //调用bind
    void bindInputTest(char* sFieldName,void* value)
    {
      OCIBind* bind; 
    hOciHandle.errCode =OCIBindByName(hOciHandle.hSql,&bind,hOciHandle.hErr,
       (OraText*)sFieldName,strlen(sFieldName),(void*)value,4,SQLT_INT,
       NULL,NULL,NULL,0,NULL,OCI_DEFAULT);
    doError(hOciHandle.errCode);
    }//调用方式,能找到数据。
    int ii=22222;
    bindInputTest("id_nummber",&ii);

    //但是,如果我这样使用,就是再调用一个函数,函数里调用这个:bindInputTest() 函数就找不到数据了
    //调用bind
    void bindInputTest123()
    {
    int ii=22222;
    bindInputTest("id_nummber",&ii)
    }表里的数据都很少,肯定都小于 int 32位的范围。----这是为什么啊?
      

  4.   

    bindInputTest123 函数调用完,ii已经被回收,&ii内存对应的数据已经不再是 22222 了