8#if __DCL_HAVE_ALLOC_DEBUG
9#undef __DCL_ALLOC_LEVEL
10#define __DCL_ALLOC_LEVEL __DCL_ALLOC_INTERNAL
26#define __DCL_TRACE0_N __DCL_TRACE0
27#define __DCL_TRACE1_N __DCL_TRACE1
28#define __DCL_TRACE2_N __DCL_TRACE2
29#define __DCL_TRACE3_N __DCL_TRACE3
30#define __DCL_TRACE4_N __DCL_TRACE4
32#define __DCL_TRACE0_N(fmt)
33#define __DCL_TRACE1_N(fmt, arg)
34#define __DCL_TRACE2_N(fmt, arg1, arg2)
35#define __DCL_TRACE3_N(fmt, arg1, arg2, arg3)
36#define __DCL_TRACE4_N(fmt, arg1, arg2, arg3, arg4)
45#define __SET_ERROR(_error, status, pError) \
46 conn()->setErrorStatus(_error, status, pError, \
47 true, __THIS_FILE__, __LINE__)
55 __inputIndicator = -1;
66 conn()->OCIDescriptorFree(
81 Param::__queryHandle = _queryHandle;
92 __inputIndicator = -1;
113 sword status = OCI_SUCCESS;
135 ub2 dataType = SQLT_TIMESTAMP;
136 ub4 descType = OCI_DTYPE_TIMESTAMP;
138 dataType = SQLT_TIMESTAMP_TZ;
139 descType = OCI_DTYPE_TIMESTAMP_TZ;
146 if (status != OCI_SUCCESS) {
160 ub2 dataType = SQLT_INTERVAL_DS;
161 ub4 descType = OCI_DTYPE_INTERVAL_DS;
163 dataType = SQLT_INTERVAL_YM;
164 descType = OCI_DTYPE_INTERVAL_YM;
169 OCI_DTYPE_INTERVAL_DS
171 if (status != OCI_SUCCESS) {
210 if (status != OCI_SUCCESS) {
225 if (status != OCI_SUCCESS) {
280 __inputIndicator = -1;
290 switch(_assignType) {
307 if (Param::__dataType != _assignType) {
314 sword status = OCI_SUCCESS;
319 if (_size <=
sizeof(int64_t )) {
320 uword sign = OCI_NUMBER_SIGNED;
322 sign = OCI_NUMBER_UNSIGNED;
324 status = ::OCINumberFromInt(
331 if (status != OCI_SUCCESS) {
337 else if (_size ==
sizeof(int64_t)) {
344 status = ::OCINumberFromText(
346 (CONST OraText*)str.data(),
354 if (status != OCI_SUCCESS) {
371 if (_size <=
sizeof(
double)) {
372 status = ::OCINumberFromReal(
378 if (status != OCI_SUCCESS) {
441 status = ::OCINumberFromText(
451 if (status != OCI_SUCCESS) {
463 switch (_assignType) {
494 switch (_assignType) {
534 Param::__dataType = _assignType;
535 __inputIndicator = 0;
542 return n < 0 ? -
n :
n;
552 sword status = OCI_SUCCESS;
557 ub2 dataType = SQLT_TIMESTAMP;
558 ub4 descType = OCI_DTYPE_TIMESTAMP;
560 dataType = SQLT_TIMESTAMP_TZ;
561 descType = OCI_DTYPE_TIMESTAMP_TZ;
568 if (status != OCI_SUCCESS) {
582 strTz = ByteString::format(
588 pTz = (OraText*)strTz.data();
589 nTzLen = strTz.length();
595 status = ::OCIDateTimeConstruct(
598 (OCIDateTime*)__data.desc,
609 if (status != OCI_SUCCESS) {
627 sword status = OCI_SUCCESS;
632 ub2 dataType = SQLT_INTERVAL_DS;
633 ub4 descType = OCI_DTYPE_INTERVAL_DS;
635 dataType = SQLT_INTERVAL_YM;
636 descType = OCI_DTYPE_INTERVAL_YM;
643 if (status != OCI_SUCCESS) {
659 status = ::OCIIntervalFromText(
662 (CONST OraText*)
"0-0",
664 (OCIInterval*)__data.desc
666 if (status == OCI_SUCCESS)
667 status = ::OCIIntervalSetYearMonth(
672 (OCIInterval*)__data.desc
676 status = ::OCIIntervalFromText(
679 (CONST OraText*)
"0 00:00:00",
681 (OCIInterval*)__data.desc
683 if (status == OCI_SUCCESS)
684 status = ::OCIIntervalSetDaySecond(
692 (OCIInterval*)__data.desc
695#if defined(__DCL_DEBUG) && 1
696 if (status == OCI_SUCCESS) {
698 status = ::OCIIntervalCheck(
701 (CONST OCIInterval*)__data.desc,
707 if (status != OCI_SUCCESS) {
720 sword status = OCI_SUCCESS;
723 OCIStmt* pStmt =
query()->stmtHandle();
734 status = ::OCIBindByPos(
749 if (status != OCI_SUCCESS) {
756 status = ::OCIBindDynamic(
764 if (status != OCI_SUCCESS) {
785 return ((
OciParam*)ictxp)->onCallbackInBind(
808 return ((
OciParam*)octxp)->onCallbackOutBind(
820inline size_t __MIN(
size_t x,
size_t y)
822 return x < y ? x : y;
853 if (__inputIndicator == -1) {
856 *pnPiece = OCI_ONE_PIECE;
857 *ppvIndicator = &__inputIndicator;
881 nRead = __inputStream->read(__buffer, nRead);
890 if (*pnPiece == OCI_FIRST_PIECE) {
892 *pnPiece = OCI_ONE_PIECE;
897 *pnPiece = OCI_LAST_PIECE;
902 *ppvBuffer = __buffer;
903 *pnActualLength = nRead;
904 *ppvIndicator =
NULL;
910 *ppvBuffer = __data.desc;
918 *pnPiece = OCI_ONE_PIECE;
919 *ppvIndicator = &__inputIndicator;
930 ub4** ppnActualLength,
932 dvoid** ppvIndicator,
975 if (*pnPiece == OCI_ONE_PIECE)
976 *pnPiece = OCI_FIRST_PIECE;
978 if (*pnPiece == OCI_FIRST_PIECE) {
1037 *ppvBuffer = __data.desc;
1042 *ppvBuffer = &__data;
1046 *pnPiece = OCI_ONE_PIECE;
1052 return OCI_CONTINUE;
#define __DCL_VERIFY(expr)
#define __DCL_ASSERT(expr)
#define IMPLEMENT_CLASSINFO(class_name, base_class_name)
#define DYNAMIC_BUFFER_SIZE
size_t __MIN(size_t x, size_t y)
#define __SET_ERROR(_errorCode)
void CharsetConvertException *size_t n
String toStringAll() const
static ByteString toByteString(int64_t _n, unsigned _base=10)
sword OCIDescriptorAlloc(void **ppDescriptorHandle, ub4 nDescriptorType, size_t xtramem_sz=0, void **ppvUserMem=NULL)
OCIError * errorHandle() const
void setErrorEx(const ByteString &_message)
OCISession * sessionHandle() const
bool getData(void *_pv, size_t *_size, SQL::DataType _dataType)
static const wchar_t * dataTypeName(ub2 _dataType)
bool getDataSize(size_t *_size, bool _maxSize)
ub4 __callbackActualLength
OciConnection * conn() const
BytesOutputStream * __bytesOutput
virtual bool __getDataSize(size_t *_size, bool _maxSize)
bool setTimeStamp(const SQL::TimeStamp *_pv, size_t _size, SQL::DataType _assignType)
sb4 onCallbackInBind(OCIBind *pBind, ub4 nIterator, ub4 _index, dvoid **ppvBuffer, ub4 *pnActualLength, ub1 *pnPiece, dvoid **ppvIndicator)
virtual bool isNull() const
static sb4 CallbackInBind(dvoid *ictxp, OCIBind *bindp, ub4 iter, ub4 index, dvoid **bufpp, ub4 *alenp, ub1 *piecep, dvoid **indpp)
bool init(SQL::Query *_query, ub4 _position)
virtual bool __setDataType(SQL::DataType _dataType)
sb4 onCallbackOutBind(OCIBind *pBind, ub4 nIterator, ub4 _index, dvoid **ppvBuffer, ub4 **ppnActualLength, ub1 *pnPiece, dvoid **ppvIndicator, ub2 **ppnReturnCode)
virtual bool __getData(void *_pv, size_t *_size, SQL::DataType _dataType)
virtual bool __setData(_CONST void *_pv, size_t _size, SQL::DataType _dataType, SQL::DataType _assignType)
bool setInterval(const SQL::Interval *_pv, size_t _size, SQL::DataType _assignType)
virtual const wchar_t * serverDataTypeName() const
static sb4 CallbackOutBind(dvoid *octxp, OCIBind *bindp, ub4 iter, ub4 index, dvoid **bufpp, ub4 **alenpp, ub1 *piecep, dvoid **indpp, ub2 **rcodepp)
static ByteString toByteString(uint64_t _u, unsigned _base=10)
size_t __MIN(size_t x, size_t y)