9#if __DCL_HAVE_ALLOC_DEBUG
10#undef __DCL_ALLOC_LEVEL
11#define __DCL_ALLOC_LEVEL __DCL_ALLOC_INTERNAL
24#define __DCL_TRACE0_N __DCL_TRACE0
25#define __DCL_TRACE1_N __DCL_TRACE1
26#define __DCL_TRACE2_N __DCL_TRACE2
27#define __DCL_TRACE3_N __DCL_TRACE3
28#define __DCL_TRACE4_N __DCL_TRACE4
30#define __DCL_TRACE0_N(fmt)
31#define __DCL_TRACE1_N(fmt, arg)
32#define __DCL_TRACE2_N(fmt, arg1, arg2)
33#define __DCL_TRACE3_N(fmt, arg1, arg2, arg3)
34#define __DCL_TRACE4_N(fmt, arg1, arg2, arg3, arg4)
42#define __SET_ERROR_HANDLE(_error, _status, _OCIError) \
43 conn()->setErrorHandle(_error, _status, _OCIError, \
44 true, __THIS_FILE__, __LINE__)
45#define __SET_ERROR_MSG(_msg) \
46 conn()->setErrorMessage(_msg, __THIS_FILE__, __LINE__)
82 sword status = OCI_SUCCESS;
111 status = OCILobFileOpen(
113 conn()->errorHandle(),
117 if (status != OCI_SUCCESS) {
123 status = OCILobGetLength(
125 conn()->errorHandle(),
129 if (status != OCI_SUCCESS) {
135 status = OCILobFileClose(
137 conn()->errorHandle(),
140 if (status != OCI_SUCCESS) {
176 if (
query()->stmtType() == OCI_STMT_SELECT) {
196 if (
query()->stmtType() == OCI_STMT_SELECT) {
295 sword status = OCI_SUCCESS;
296 if (*_size <=
sizeof(int64_t )) {
297 status = OCINumberToInt(
298 conn()->errorHandle(),
302 OCI_NUMBER_SIGNED : OCI_NUMBER_UNSIGNED,
305 if (status != OCI_SUCCESS) {
311 *_size =
sizeof(int64_t);
324 case sizeof(float): {
328 case sizeof(double) : {
333 *_size =
sizeof(float);
342 case sizeof(double) : {
347 *_size =
sizeof(double);
355 if (*_size <=
sizeof(
long double)) {
359 sword status = OCINumberToReal(
360 conn()->errorHandle(),
365 if (status != OCI_SUCCESS) {
371 *_size =
sizeof(double);
390 ByteBuffer* buf = ByteBuffer::create_e(n);
391 sword status = OCINumberToText(
392 conn()->errorHandle(),
394 (
const OraText*)
"TM",
401 if (status != OCI_SUCCESS) {
402 if (buf->__allocLength < n) {
403 ByteBuffer::extend(buf, n);
405 status = OCINumberToText(
406 conn()->errorHandle(),
408 (CONST OraText*)
"TM",
416 if (status != OCI_SUCCESS) {
422 buf->__dataLength = n;
426 if (*_size < (
size_t)s.length()) {
427 *_size = (size_t)s.length();
432 strncpy(pBuf, s.data(), s.length());
433 if (*_size > (
size_t)s.length()) {
434 *_size = (size_t)s.length();
453 sword status = OCI_SUCCESS;
471 case SQLT_TIMESTAMP :
472 case SQLT_TIMESTAMP_TZ :
473 case SQLT_TIMESTAMP_LTZ: {
474 status = OCIDateTimeGetDate(
475 conn()->sessionHandle(),
476 conn()->errorHandle(),
482 if (status == OCI_SUCCESS)
483 status = OCIDateTimeGetTime(
484 conn()->sessionHandle(),
485 conn()->errorHandle(),
492 if (status == OCI_SUCCESS &&
__valueType != SQLT_TIMESTAMP) {
495 status = OCIDateTimeGetTimeZoneOffset(
496 conn()->sessionHandle(),
497 conn()->errorHandle(),
502 if (status != OCI_SUCCESS) {
507 _buf->
tzoff = tzHour * 60 + tzMin;
536 sword status = OCI_SUCCESS;
539 case SQLT_INTERVAL_YM: {
540 status = OCIIntervalGetYearMonth(
541 conn()->sessionHandle(),
542 conn()->errorHandle(),
549 case SQLT_INTERVAL_DS: {
550 status = OCIIntervalGetDaySecond(
551 conn()->sessionHandle(),
552 conn()->errorHandle(),
567 if (status != OCI_SUCCESS) {
582inline size_t __MIN(
size_t x,
size_t y)
584 return x < y ? x : y;
618 if (total < *_size) {
619 *(_buf + total) =
'\0';
708 sword status = OCI_SUCCESS;
710 status = OCILobFileOpen(
712 conn()->errorHandle(),
716 if (status != OCI_SUCCESS) {
727 status = OCILobCharSetForm(
729 conn()->errorHandle(),
733 if (status != OCI_SUCCESS) {
741 while(total < *_size) {
742 byte_t* buf = _buf + total;
743 size_t bufl = *_size - total;
749 conn()->errorHandle(),
758 (OCICallbackLobRead)
NULL,
762 if (status == OCI_ERROR) {
779 status = OCILobFileClose(
781 conn()->errorHandle(),
784 if (status != OCI_SUCCESS) {
791 status = OCILobFileClose(
793 conn()->errorHandle2(),
796 if (status != OCI_SUCCESS) {
802 if (total < *_size) {
803 *(_buf + total) =
'\0';
817 sword status = OCI_SUCCESS;
819 status = OCILobFileOpen(
821 conn()->errorHandle(),
825 if (status != OCI_SUCCESS) {
836 status = OCILobCharSetForm(
838 conn()->errorHandle(),
842 if (status != OCI_SUCCESS) {
851 while(total < *_size) {
852 size_t bufl =
__MIN(*_size - total,
sizeof(buf));
856 conn()->errorHandle(),
865 (OCICallbackLobRead)
NULL,
869 if (status == OCI_ERROR) {
878 _output->write(buf, byte_amt);
895 status = OCILobFileClose(
897 conn()->errorHandle(),
900 if (status != OCI_SUCCESS) {
907 status = OCILobFileClose(
909 conn()->errorHandle2(),
912 if (status != OCI_SUCCESS) {
922#define SQLTYPE_NAME(_sqlt, _name) case _sqlt : return L ## _name
934 SQLTYPE_NAME(SQLT_TIMESTAMP_TZ,
"TIMESTAMP WITH TIME ZONE");
935 SQLTYPE_NAME(SQLT_TIMESTAMP_LTZ,
"TIMESTAMP WITH LOCAL TIME ZONE");
936 SQLTYPE_NAME(SQLT_INTERVAL_YM,
"INTERVAL YEAR TO MONTH");
937 SQLTYPE_NAME(SQLT_INTERVAL_DS,
"INTERVAL DAY TO SECOND");
949 return L
"Unknown Type: Driver is not Support";
958 size =
sizeof(OCINumber);
961 size =
sizeof(float);
964 size =
sizeof(double);
968 size =
sizeof(OCIDate);
975 case SQLT_TIMESTAMP_TZ:
976 case SQLT_TIMESTAMP_LTZ:
977 case SQLT_INTERVAL_YM:
978 case SQLT_INTERVAL_DS:
983 size =
sizeof(
void*);
986 size = OCI_ROWID_LEN;
1002 size =
sizeof(float);
1005 size =
sizeof(double);
1011 size =
sizeof(long);
1013 case SQLT_TIMESTAMP:
1014 case SQLT_TIMESTAMP_TZ:
1015 case SQLT_TIMESTAMP_LTZ:
1016 case SQLT_INTERVAL_YM:
1017 case SQLT_INTERVAL_DS:
1022 size =
sizeof(
void*);
1031 size =
sizeof(char);
1033 return (_offset + size - 1) & ~(size - 1);
#define __DCL_TRACE2_N(fmt, arg1, arg2)
#define __SET_ERROR_HANDLE(_SQLCODE)
#define SQLTYPE_NAME(_dataType, name)
#define __DCL_TRACE0(psz)
#define __DCL_ASSERT(expr)
size_t __MIN(size_t x, size_t y)
#define __DYNAMIC_BUFFER_SIZE
bool getBytes(byte_t *_buf, size_t *_size)
bool writeToFromLob(OutputStream *_output, size_t *_size)
static const wchar_t * __TYPE_NAME(ub2 _sqlt)
virtual OciQuery * query() const =0
bool getBytesFromLob(byte_t *_buf, size_t *_size)
bool getFloat(void *_buf, size_t *_size)
static size_t __TYPE_ALIGN(size_t _offset, ub2 _sqlt)
bool getDataSize(size_t *_size, bool _maxsize)
bool getInteger(void *_buf, size_t *_size, SQL::DataType _bufType)
bool getInterval(SQL::Interval *_buf)
bool getTimeStamp(SQL::TimeStamp *_buf)
bool getNumericText(char *_buf, size_t *_size)
static ub4 __TYPE_SIZE(ub2 _sqlt, ub4 _size)
bool getData(void *_buf, size_t *_size, SQL::DataType _bufType)
ub4 __callbackActualLength
OciConnection * conn() const
BytesOutputStream * __bytesOutput
const wchar_t * serverDataTypeName() const
bool writeTo(OutputStream *_buf, size_t *_size)
size_t __MIN(size_t x, size_t y)