[Ocipl-commits] SF.net SVN: ocipl: [43] trunk/ocipl
Brought to you by:
martinfuchs
|
From: <mar...@us...> - 2008-02-09 14:00:32
|
Revision: 43
http://ocipl.svn.sourceforge.net/ocipl/?rev=43&view=rev
Author: martinfuchs
Date: 2008-02-09 06:00:37 -0800 (Sat, 09 Feb 2008)
Log Message:
-----------
handle the new Oracle 10g data types BINARY_FLOAT and BINARY_DOUBLE
Modified Paths:
--------------
trunk/ocipl/ocipl.cpp
trunk/ocipl/ocipl.h
Modified: trunk/ocipl/ocipl.cpp
===================================================================
--- trunk/ocipl/ocipl.cpp 2008-02-09 10:16:38 UTC (rev 42)
+++ trunk/ocipl/ocipl.cpp 2008-02-09 14:00:37 UTC (rev 43)
@@ -774,6 +774,16 @@
str << _T("NUMBER(") << (int)_precision << _T(")");
break;
+#ifdef SQLT_BFLOAT
+ case OCI_TYPECODE_BFLOAT:
+ str << _T("BINARY_FLOAT");
+ break;
+
+ case OCI_TYPECODE_BDOUBLE:
+ str << _T("BINARY_DOUBLE");
+ break;
+#endif
+
case OCI_TYPECODE_DATE:
str << _T("DATE");
break;
@@ -1099,13 +1109,11 @@
oci_check_error(errh, res);
#if ORACLE_VERSION>=90
- // Oracle 9 ->
// retrieve the length semantics for the column
size = sizeof(_char_semantics);
res = OCIAttrGet(handle, OCI_DTYPE_PARAM, &_char_semantics, &size, OCI_ATTR_CHAR_USED, errh);
if (res != OCI_SUCCESS)
_char_semantics = 0;
- // <- Oracle 9
size = sizeof(_width);
if (_char_semantics)
@@ -1124,7 +1132,11 @@
_scale = -127;
break;
- case OCI_TYPECODE_NUMBER: {
+ case OCI_TYPECODE_NUMBER:
+#ifdef SQLT_BFLOAT
+ case OCI_TYPECODE_BFLOAT:
+ case OCI_TYPECODE_BDOUBLE:
+#endif
size = sizeof(_precision);
res = OCIAttrGet(handle, OCI_DTYPE_PARAM, &_precision, &size, OCI_ATTR_PRECISION, errh);
oci_check_error(errh, res);
@@ -1132,7 +1144,7 @@
size = sizeof(_scale);
res = OCIAttrGet(handle, OCI_DTYPE_PARAM, &_scale, &size, OCI_ATTR_SCALE, errh);
oci_check_error(errh, res);
- break;}
+ break;
case OCI_TYPECODE_DATE:
#if ORACLE_VERSION>=81
@@ -1298,6 +1310,13 @@
_number = new SqlNumber;
break;
+#ifdef SQLT_BFLOAT
+ case OCI_TYPECODE_BFLOAT:
+ case OCI_TYPECODE_BDOUBLE:
+ _double = other._double;
+ break;
+#endif
+
case OCI_TYPECODE_DATE:
_oci_date = new OciDate;
break;
@@ -1350,6 +1369,16 @@
_number = new SqlNumber(*other._number);
break;
+#ifdef SQLT_BFLOAT
+ case OCI_TYPECODE_BFLOAT:
+ _float = other._float;
+ break;
+
+ case OCI_TYPECODE_BDOUBLE:
+ _double = other._double;
+ break;
+#endif
+
case OCI_TYPECODE_DATE:
_oci_date = new OciDate(*other._oci_date);
break;
@@ -1391,6 +1420,12 @@
delete _number;
break;
+#ifdef SQLT_BFLOAT
+ case OCI_TYPECODE_BFLOAT:
+ case OCI_TYPECODE_BDOUBLE:
+ break;
+#endif
+
case OCI_TYPECODE_DATE:
delete _oci_date;
break;
@@ -1422,6 +1457,8 @@
tstring SqlVariant::str(OCIError* errh) const
{
+ TCHAR buffer[16];
+
switch(_data_type) {
case 0:
return _T("");
@@ -1433,6 +1470,16 @@
case OCI_TYPECODE_NUMBER:
return _number->str(errh);
+#ifdef SQLT_BFLOAT
+ case OCI_TYPECODE_BFLOAT:
+ _stprintf(buffer, _T("%f"), _float);
+ return buffer;
+
+ case OCI_TYPECODE_BDOUBLE:
+ _stprintf(buffer, _T("%f"), _double);
+ return buffer;
+#endif
+
case OCI_TYPECODE_DATE:
return _oci_date->str();
@@ -1474,6 +1521,14 @@
case OCI_TYPECODE_NUMBER:
return *_number;
+#ifdef SQLT_BFLOAT
+ case OCI_TYPECODE_BFLOAT:
+ return SqlNumber(_float);
+
+ case OCI_TYPECODE_BDOUBLE:
+ return SqlNumber(_double);
+#endif
+
//case OCI_TYPECODE_DATE:
// return ...
@@ -1534,6 +1589,10 @@
{
switch(_data_type) {
case 0:
+#ifdef SQLT_BFLOAT
+ case OCI_TYPECODE_BFLOAT:
+ case OCI_TYPECODE_BDOUBLE:
+#endif
return true;
case OCI_TYPECODE_VARCHAR:
@@ -1576,6 +1635,16 @@
stmt.bind_result(idx, *_number);
break;
+#ifdef SQLT_BFLOAT
+ case OCI_TYPECODE_BFLOAT:
+ stmt.bind_result(idx, _float);
+ break;
+
+ case OCI_TYPECODE_BDOUBLE:
+ stmt.bind_result(idx, _double);
+ break;
+#endif
+
case OCI_TYPECODE_DATE:
stmt.bind_result(idx, *_oci_date);
break;
@@ -1623,6 +1692,16 @@
_pnumber = new SqlNumberArray(size);
break;
+#ifdef SQLT_BFLOAT
+ case OCI_TYPECODE_BFLOAT:
+ _pfloat = new float(size);
+ break;
+
+ case OCI_TYPECODE_BDOUBLE:
+ _pdouble = new double(size);
+ break;
+#endif
+
case OCI_TYPECODE_DATE:
_poci_date = new OciDateArray(size);
break;
@@ -1675,6 +1754,16 @@
_pnumber = new SqlNumberArray(*other._pnumber);
break;
+#ifdef SQLT_BFLOAT
+ case OCI_TYPECODE_BFLOAT:
+ _pfloat = new float(*other._pfloat);
+ break;
+
+ case OCI_TYPECODE_BDOUBLE:
+ _pdouble = new double(*other._pfloat);
+ break;
+#endif
+
case OCI_TYPECODE_DATE:
_poci_date = new OciDateArray(*other._poci_date);
break;
@@ -1716,6 +1805,16 @@
delete _pnumber;
break;
+#ifdef SQLT_BFLOAT
+ case OCI_TYPECODE_BFLOAT:
+ delete _pfloat;
+ break;
+
+ case OCI_TYPECODE_BDOUBLE:
+ delete _pfloat;
+ break;
+#endif
+
case OCI_TYPECODE_DATE:
delete _poci_date;
break;
@@ -1747,6 +1846,8 @@
tstring SqlVariantArray::str(int row, OCIError* errh) const
{
+ TCHAR buffer[16];
+
switch(_data_type) {
case 0:
return _T("");
@@ -1758,6 +1859,16 @@
case OCI_TYPECODE_NUMBER:
return _pnumber->str(row, errh);
+#ifdef SQLT_BFLOAT
+ case OCI_TYPECODE_BFLOAT:
+ _stprintf(buffer, _T("%f"), _pfloat[row]);
+ return buffer;
+
+ case OCI_TYPECODE_BDOUBLE:
+ _stprintf(buffer, _T("%f"), _pdouble[row]);
+ return buffer;
+#endif
+
case OCI_TYPECODE_DATE:
return _poci_date->str(row);
@@ -1802,6 +1913,14 @@
else
return SqlNumber();
+#ifdef SQLT_BFLOAT
+ case OCI_TYPECODE_BFLOAT:
+ return SqlNumber(errh, _pfloat[row]);
+
+ case OCI_TYPECODE_BDOUBLE:
+ return SqlNumber(errh, _pdouble[row]);
+#endif
+
//case OCI_TYPECODE_DATE:
// return ...
@@ -1868,6 +1987,10 @@
{
switch(_data_type) {
case 0:
+#ifdef SQLT_BFLOAT
+ case OCI_TYPECODE_BFLOAT:
+ case OCI_TYPECODE_BDOUBLE:
+#endif
return true;
case OCI_TYPECODE_VARCHAR:
@@ -1910,6 +2033,16 @@
stmt.bind_result(idx, *_pnumber);
break;
+#ifdef SQLT_BFLOAT
+ case OCI_TYPECODE_BFLOAT:
+ stmt.bind_result(idx, *_pfloat);
+ break;
+
+ case OCI_TYPECODE_BDOUBLE:
+ stmt.bind_result(idx, *_pdouble);
+ break;
+#endif
+
case OCI_TYPECODE_DATE:
stmt.bind_result(idx, *_poci_date);
break;
Modified: trunk/ocipl/ocipl.h
===================================================================
--- trunk/ocipl/ocipl.h 2008-02-09 10:16:38 UTC (rev 42)
+++ trunk/ocipl/ocipl.h 2008-02-09 14:00:37 UTC (rev 43)
@@ -2193,6 +2193,25 @@
buffers = count;
}
+#ifdef SQLT_BFLOAT
+ DefinePar(float& var, OCIInd* ind=0)
+ {
+ valuep = &var;
+ value_sz= sizeof(float);
+ dty = SQLT_FLT;
+ indp = ind;
+ buffers = 1;
+ }
+ DefinePar(float* arr, int count, OCIInd* ind=0)
+ {
+ valuep = arr;
+ value_sz= sizeof(float);
+ dty = SQLT_FLT;
+ indp = ind;
+ buffers = count;
+ }
+#endif
+
DefinePar(const TCHAR* buffer, size_t len, ub2 type=SQLT_STR, OCIInd* ind=0)
{
valuep = (dvoid*) buffer;
@@ -2708,6 +2727,10 @@
SqlDateTime*_sql_date;
// OciBlob* _blob;
// OciClob* _clob;
+#ifdef SQLT_BFLOAT
+ float _float;
+ double _double;
+#endif
};
ub2 _data_type;
@@ -2755,7 +2778,11 @@
SqlDateTimeArray*_psql_date;
// OciBlobArray* _pblob;
// OciClobArray* _pclob;
- void* _punion_ptr;
+ void* _punion_ptr;
+#ifdef SQLT_BFLOAT
+ float* _pfloat;
+ double* _pdouble;
+#endif
};
ub2 _data_type;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|