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) {
278 sword status = OCI_SUCCESS;
279 if (*_size <=
sizeof(int64_t )) {
280 status = ::OCINumberToInt(
285 OCI_NUMBER_SIGNED : OCI_NUMBER_UNSIGNED,
288 if (status != OCI_SUCCESS) {
294 *_size =
sizeof(int64_t);
307 if (*_size <=
sizeof(
long double)) {
311 sword status = ::OCINumberToReal(
317 if (status != OCI_SUCCESS) {
323 *_size =
sizeof(double);
337 ByteBuffer*
buf = ByteBuffer::create_e(
n);
338 sword status = ::OCINumberToText(
341 (
const OraText*)
"TM",
348 if (status != OCI_SUCCESS) {
349 if (
buf->__allocLength <
n) {
350 ByteBuffer::extend(
buf,
n);
352 status = ::OCINumberToText(
355 (CONST OraText*)
"TM",
363 if (status != OCI_SUCCESS) {
369 buf->__dataLength =
n;
373 if (*_size < (
size_t)s.length()) {
374 *_size = (size_t)s.length();
379 strncpy(pBuf, s.data(), s.length());
380 if (*_size > (
size_t)s.length()) {
381 *_size = (size_t)s.length();
404 sword status = OCI_SUCCESS;
409 OCIDateGetDate((CONST OCIDate*)
__value,
422 case SQLT_TIMESTAMP :
423 case SQLT_TIMESTAMP_TZ :
424 case SQLT_TIMESTAMP_LTZ: {
425 status = ::OCIDateTimeGetDate(
433 if (status == OCI_SUCCESS)
434 status = ::OCIDateTimeGetTime(
443 if (status == OCI_SUCCESS &&
__dataType != SQLT_TIMESTAMP) {
447 status = ::OCIDateTimeGetTimeZoneOffset(
454 if (status != OCI_SUCCESS) {
459 _pv->
nTzMin = nTzHour * 60 + nTzMin;
493 sword status = OCI_SUCCESS;
496 case SQLT_INTERVAL_YM :
497 status = OCIIntervalGetYearMonth(
505 case SQLT_INTERVAL_DS :
506 status = OCIIntervalGetDaySecond(
521 if (status != OCI_SUCCESS) {
536inline size_t __MIN(
size_t x,
size_t y)
538 return x < y ? x : y;
557 size_t nTotalCopy = 0;
570 memcpy(_pv + nTotalCopy,
__value, nCopy);
574 if (nTotalCopy < *_size)
575 *(_pv + nTotalCopy) =
'\0';
609 size_t nTotalWritten = 0;
616 nTotalWritten += nWrite;
622 pOutput->write(
__value, nWrite);
623 nTotalWritten += nWrite;
627 *_size = nTotalWritten;
663 sword status = OCI_SUCCESS;
665 status = ::OCILobFileOpen(
671 if (status != OCI_SUCCESS) {
678 size_t nTotalRead = 0;
680 while(nTotalRead < *_size) {
681 nRead = *_size - nTotalRead;
682 status = ::OCILobRead(
691 (OCICallbackLobRead)
NULL,
694 if (status == OCI_ERROR) {
714 status = ::OCILobFileClose(
718 if (status != OCI_SUCCESS) {
725 status = ::OCILobFileClose(
727 conn()->errorHandle2(),
729 if (status != OCI_SUCCESS) {
735 if (*_size > nTotalRead)
736 *(_pbuf + nTotalRead) =
'\0';
753 sword status = OCI_SUCCESS;
755 status = ::OCILobFileOpen(
761 if (status != OCI_SUCCESS) {
768 size_t nTotalRead = 0;
771 while(nTotalRead < *_size) {
772 nRead =
__MIN(*_size - nTotalRead,
sizeof(
buf));
773 status = ::OCILobRead(
782 (OCICallbackLobRead)
NULL,
785 if (status == OCI_ERROR) {
793 pOutput->write(
buf, nRead);
813 status = ::OCILobFileClose(
817 if (status != OCI_SUCCESS) {
824 status = ::OCILobFileClose(
826 conn()->errorHandle2(),
828 if (status != OCI_SUCCESS) {
841#define SQLTYPE_NAME(_dataType, name) case _dataType : return L ## name
852 SQLTYPE_NAME(SQLT_TIMESTAMP_TZ,
"TIMESTAMP WITH TIME ZONE");
853 SQLTYPE_NAME(SQLT_TIMESTAMP_LTZ,
"TIMESTAMP WITH LOCAL TIME ZONE");
854 SQLTYPE_NAME(SQLT_INTERVAL_YM,
"INTERVAL YEAR TO MONTH");
855 SQLTYPE_NAME(SQLT_INTERVAL_DS,
"INTERVAL DAY TO SECOND");
867 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 getInteger(void *_pv, size_t *_size, SQL::DataType _dataType)
bool getInterval(SQL::Interval *_pv, size_t *_size)
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 getTimeStamp(SQL::TimeStamp *_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)