c++ - Retrieving data type information for columns in an Oracle OCCI ResultSet -


after sending simple query via occi (example: select * all_users) i'm in need know datatype column, moment i've been playing resultset::getcolumnlistmetadata() method without success.
questions:
1. how can datatype using aforementioned method , metadata class?
2. there better documentation out there 1 provided oracle?

i've got old code laying around, guess want. using oci, not occi, maybe helps.

/* number of columns in query */ ub4 colcount = 0; oracheckerr( m_err, ociattrget((dvoid *)_stmt, oci_htype_stmt, (dvoid *)&colcount,                     0, oci_attr_param_count, m_err));  ub2 oratype = 0; ociparam *col = 0;  ub4 namelen, colwidth, charsemantics; text *name;  (ub4 = 1; <= colcount; i++) {     /* parameter column */     oracheckerr( m_err, ociparamget((dvoid *)_stmt, oci_htype_stmt, m_err, (dvoid**)&col, i));      /* data-type of column */     oratype = 0;     oracheckerr( m_err, ociattrget((dvoid *)col, oci_dtype_param,             (dvoid *)&oratype, 0, oci_attr_data_type,  m_err));      /* retrieve column name attribute */     namelen = 0;     oracheckerr( m_err, ociattrget((dvoid*)col, oci_dtype_param,             (dvoid**) &name, &namelen, oci_attr_name, m_err ));      /* retrieve length semantics column */     charsemantics = 0;     oracheckerr( m_err, ociattrget((dvoid*)col, oci_dtype_param,             (dvoid*) &charsemantics,0, oci_attr_char_used, m_err ));      colwidth = 0;     if (charsemantics)         /* retrieve column width in characters */         oracheckerr( m_err, ociattrget((dvoid*)col, oci_dtype_param,                 (dvoid*) &colwidth, 0, oci_attr_char_size, m_err ));     else         /* retrieve column width in bytes */         oracheckerr( m_err, ociattrget((dvoid*)col, oci_dtype_param,                 (dvoid*) &colwidth,0, oci_attr_data_size, m_err ));      _elements.output.push_back( sqlelement( string(reinterpret_cast<char*>(name), namelen), getsqltypes( oratype ), i, colwidth )); }  ocihandlefree ( (dvoid*) _stmt, oci_htype_stmt ); 

edit: per ypour request:

sqltypes getsqltypes(ub2 _oracletype) { switch( _oracletype ) {     case sqlt_int:         return stint;     case sqlt_flt:     case sqlt_bdouble:         return stdouble;     case sqlt_bfloat:         return stfloat;     case sqlt_odt:         return stdate;      case sqlt_date:     case sqlt_timestamp:     case sqlt_timestamp_tz:     case sqlt_timestamp_ltz:         return sttimestamp;      case sqlt_chr:     case sqlt_num:     case sqlt_str:     case sqlt_vcs:     default:         return sttext; } } 

Comments

Popular posts from this blog

c++ - How do I get a multi line tooltip in MFC -

asp.net - In javascript how to find the height and width -

c# - DataTable to EnumerableRowCollection -