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;
125 sword status = OCI_SUCCESS;
145 ub2 dataType = SQLT_TIMESTAMP;
146 ub4 nDescType = OCI_DTYPE_TIMESTAMP;
148 dataType = SQLT_TIMESTAMP_TZ;
149 nDescType = OCI_DTYPE_TIMESTAMP_TZ;
156 if (status != OCI_SUCCESS) {
169 ub2 dataType = SQLT_INTERVAL_DS;
170 ub4 nDescType = OCI_DTYPE_INTERVAL_DS;
172 dataType = SQLT_INTERVAL_YM;
173 nDescType = OCI_DTYPE_INTERVAL_YM;
178 OCI_DTYPE_INTERVAL_DS
180 if (status != OCI_SUCCESS) {
219 if (status != OCI_SUCCESS) {
234 if (status != OCI_SUCCESS) {
289 __inputIndicator = -1;
299 switch(_assignType) {
312 if (Param::__dataType != _assignType) {
319 sword status = OCI_SUCCESS;
324 if (_size <=
sizeof(int64_t )) {
325 uword sign = OCI_NUMBER_SIGNED;
327 sign = OCI_NUMBER_UNSIGNED;
329 status = ::OCINumberFromInt(
336 if (status != OCI_SUCCESS) {
342 else if (_size ==
sizeof(int64_t)) {
349 status = ::OCINumberFromText(
351 (CONST OraText*)str.data(),
359 if (status != OCI_SUCCESS) {
376 if (_size <=
sizeof(
double)) {
377 status = ::OCINumberFromReal(
383 if (status != OCI_SUCCESS) {
449 status = ::OCINumberFromText(
459 if (status != OCI_SUCCESS) {
473 switch (_assignType) {
504 switch (_assignType) {
544 Param::__dataType = _assignType;
545 __inputIndicator = 0;
552 return n < 0 ? -
n :
n;
562 sword status = OCI_SUCCESS;
567 ub2 dataType = SQLT_TIMESTAMP;
568 ub4 nDescType = OCI_DTYPE_TIMESTAMP;
570 dataType = SQLT_TIMESTAMP_TZ;
571 nDescType = OCI_DTYPE_TIMESTAMP_TZ;
578 if (status != OCI_SUCCESS) {
592 strTz = ByteString::format(
598 pTz = (OraText*)strTz.data();
599 nTzLen = strTz.length();
605 status = ::OCIDateTimeConstruct(
608 (OCIDateTime*)__data.desc,
619 if (status != OCI_SUCCESS) {
637 sword status = OCI_SUCCESS;
642 ub2 dataType = SQLT_INTERVAL_DS;
643 ub4 nDescType = OCI_DTYPE_INTERVAL_DS;
645 dataType = SQLT_INTERVAL_YM;
646 nDescType = OCI_DTYPE_INTERVAL_YM;
653 if (status != OCI_SUCCESS) {
669 status = ::OCIIntervalFromText(
672 (CONST OraText*)
"0-0",
674 (OCIInterval*)__data.desc
676 if (status == OCI_SUCCESS)
677 status = ::OCIIntervalSetYearMonth(
682 (OCIInterval*)__data.desc
686 status = ::OCIIntervalFromText(
689 (CONST OraText*)
"0 00:00:00",
691 (OCIInterval*)__data.desc
693 if (status == OCI_SUCCESS)
694 status = ::OCIIntervalSetDaySecond(
702 (OCIInterval*)__data.desc
705#if defined(__DCL_DEBUG) && 1
706 if (status == OCI_SUCCESS) {
708 status = ::OCIIntervalCheck(
711 (CONST OCIInterval*)__data.desc,
717 if (status != OCI_SUCCESS) {
730 sword status = OCI_SUCCESS;
733 OCIStmt* pStmt =
query()->stmtHandle();
744 status = ::OCIBindByPos(
759 if (status != OCI_SUCCESS) {
766 status = ::OCIBindDynamic(
774 if (status != OCI_SUCCESS) {
795 return ((
OciParam*)ictxp)->onCallbackInBind(
818 return ((
OciParam*)octxp)->onCallbackOutBind(
830inline size_t __MIN(
size_t x,
size_t y)
832 return x < y ? x : y;
863 if (__inputIndicator == -1) {
866 *pnPiece = OCI_ONE_PIECE;
867 *ppvIndicator = &__inputIndicator;
891 nRead = __inputStream->read(__buffer, nRead);
900 if (*pnPiece == OCI_FIRST_PIECE) {
902 *pnPiece = OCI_ONE_PIECE;
907 *pnPiece = OCI_LAST_PIECE;
912 *ppvBuffer = __buffer;
913 *pnActualLength = nRead;
914 *ppvIndicator =
NULL;
920 *ppvBuffer = __data.desc;
928 *pnPiece = OCI_ONE_PIECE;
929 *ppvIndicator = &__inputIndicator;
940 ub4** ppnActualLength,
942 dvoid** ppvIndicator,
985 if (*pnPiece == OCI_ONE_PIECE)
986 *pnPiece = OCI_FIRST_PIECE;
988 if (*pnPiece == OCI_FIRST_PIECE) {
1047 *ppvBuffer = __data.desc;
1052 *ppvBuffer = &__data;
1056 *pnPiece = OCI_ONE_PIECE;
1062 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)