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)
43#define __SET_ERROR(_error, status, pError) \
44 conn()->setErrorStatus(_error, status, pError, \
45 true, __THIS_FILE__, __LINE__)
93 sword status = OCI_SUCCESS;
119 status = ::OCILobFileOpen(
125 if (status != OCI_SUCCESS) {
131 status = ::OCILobGetLength2(
137 if (status != OCI_SUCCESS) {
143 status = ::OCILobFileClose(
148 if (status != OCI_SUCCESS) {
237 size_t size =
sizeof(ts);
254 size_t size =
sizeof(ts);
307 sword status = OCI_SUCCESS;
308 if (*_size <=
sizeof(int64_t )) {
309 status = ::OCINumberToInt(
314 OCI_NUMBER_SIGNED : OCI_NUMBER_UNSIGNED,
317 if (status != OCI_SUCCESS) {
323 *_size =
sizeof(int64_t);
336 if (*_size <=
sizeof(
long double)) {
340 sword status = ::OCINumberToReal(
346 if (status != OCI_SUCCESS) {
352 *_size =
sizeof(double);
366 ByteBuffer*
buf = ByteBuffer::create_e(
n);
367 sword status = ::OCINumberToText(
370 (
const OraText*)
"TM",
377 if (status != OCI_SUCCESS) {
378 if (
buf->__allocLength <
n) {
379 ByteBuffer::extend(
buf,
n);
381 status = ::OCINumberToText(
384 (CONST OraText*)
"TM",
392 if (status != OCI_SUCCESS) {
398 buf->__dataLength =
n;
402 if (*_size < (
size_t)s.length()) {
403 *_size = (size_t)s.length();
408 strncpy(pBuf, s.data(), s.length());
409 if (*_size > (
size_t)s.length()) {
410 *_size = (size_t)s.length();
433 sword status = OCI_SUCCESS;
452 case SQLT_TIMESTAMP :
453 case SQLT_TIMESTAMP_TZ :
454 case SQLT_TIMESTAMP_LTZ: {
455 status = ::OCIDateTimeGetDate(
463 if (status == OCI_SUCCESS)
464 status = ::OCIDateTimeGetTime(
473 if (status == OCI_SUCCESS &&
__dataType != SQLT_TIMESTAMP) {
477 status = ::OCIDateTimeGetTimeZoneOffset(
484 if (status != OCI_SUCCESS) {
489 _pv->
tzoff = tzHour * 60 + tzMin;
521 sword status = OCI_SUCCESS;
524 case SQLT_INTERVAL_YM :
525 status = OCIIntervalGetYearMonth(
533 case SQLT_INTERVAL_DS :
534 status = OCIIntervalGetDaySecond(
549 if (status != OCI_SUCCESS) {
564inline size_t __MIN(
size_t x,
size_t y)
566 return x < y ? x : y;
585 size_t nTotalCopy = 0;
598 memcpy(_pv + nTotalCopy,
__value, nCopy);
602 if (nTotalCopy < *_size)
603 *(_pv + nTotalCopy) =
'\0';
637 size_t nTotalWritten = 0;
644 nTotalWritten += nWrite;
650 pOutput->write(
__value, nWrite);
651 nTotalWritten += nWrite;
655 *_size = nTotalWritten;
691 sword status = OCI_SUCCESS;
693 status = ::OCILobFileOpen(
699 if (status != OCI_SUCCESS) {
706 size_t nTotalRead = 0;
708 while(nTotalRead < *_size) {
709 nRead = *_size - nTotalRead;
710 status = ::OCILobRead(
719 (OCICallbackLobRead)
NULL,
722 if (status == OCI_ERROR) {
742 status = ::OCILobFileClose(
746 if (status != OCI_SUCCESS) {
753 status = ::OCILobFileClose(
755 conn()->errorHandle2(),
757 if (status != OCI_SUCCESS) {
763 if (*_size > nTotalRead)
764 *(_pbuf + nTotalRead) =
'\0';
781 sword status = OCI_SUCCESS;
783 status = ::OCILobFileOpen(
789 if (status != OCI_SUCCESS) {
796 size_t nTotalRead = 0;
799 while(nTotalRead < *_size) {
800 nRead =
__MIN(*_size - nTotalRead,
sizeof(
buf));
801 status = ::OCILobRead(
810 (OCICallbackLobRead)
NULL,
813 if (status == OCI_ERROR) {
821 pOutput->write(
buf, nRead);
841 status = ::OCILobFileClose(
845 if (status != OCI_SUCCESS) {
852 status = ::OCILobFileClose(
854 conn()->errorHandle2(),
856 if (status != OCI_SUCCESS) {
869#define SQLTYPE_NAME(_dataType, name) case _dataType : return L ## name
880 SQLTYPE_NAME(SQLT_TIMESTAMP_TZ,
"TIMESTAMP WITH TIME ZONE");
881 SQLTYPE_NAME(SQLT_TIMESTAMP_LTZ,
"TIMESTAMP WITH LOCAL TIME ZONE");
882 SQLTYPE_NAME(SQLT_INTERVAL_YM,
"INTERVAL YEAR TO MONTH");
883 SQLTYPE_NAME(SQLT_INTERVAL_DS,
"INTERVAL DAY TO SECOND");
895 return L
"Unknown Type: Driver is not Support";
#define SQLTYPE_NAME(_dataType, name)
#define __DCL_TRACE0(psz)
#define __DCL_ASSERT(expr)
size_t __MIN(size_t x, size_t y)
#define __SET_ERROR(_errorCode)
void CharsetConvertException *size_t n
OCISvcCtx * svcctxHandle() const
OCIError * errorHandle() const
OCISession * sessionHandle() const
bool getData(void *_pv, size_t *_size, SQL::DataType _dataType)
bool getBytesFromLob(byte_t *_pv, size_t *_size)
bool getInterval(SQL::Interval *_pv)
bool getTimeStamp(SQL::TimeStamp *_pv)
bool getInteger(void *_pv, size_t *_size, SQL::DataType _dataType)
static const wchar_t * dataTypeName(ub2 _dataType)
bool getNumericText(char *_pv, size_t *_size)
bool getBytes(byte_t *_pv, size_t *_size)
bool getDataSize(size_t *_size, bool _maxSize)
bool getFloat(void *_pv, size_t *_size)
bool writeToFromLob(OutputStream *_pv, size_t *_size)
ub4 __callbackActualLength
OciConnection * conn() const
bool writeTo(OutputStream *_pv, size_t *_size)
BytesOutputStream * __bytesOutput
size_t __MIN(size_t x, size_t y)