9#if __DCL_HAVE_ALLOC_DEBUG
10#undef __DCL_ALLOC_LEVEL
11#define __DCL_ALLOC_LEVEL __DCL_ALLOC_INTERNAL
28#define __DCL_TRACE0_N __DCL_TRACE0
29#define __DCL_TRACE1_N __DCL_TRACE1
30#define __DCL_TRACE2_N __DCL_TRACE2
31#define __DCL_TRACE3_N __DCL_TRACE3
32#define __DCL_TRACE4_N __DCL_TRACE4
34#define __DCL_TRACE0_N(fmt)
35#define __DCL_TRACE1_N(fmt, arg)
36#define __DCL_TRACE2_N(fmt, arg1, arg2)
37#define __DCL_TRACE3_N(fmt, arg1, arg2, arg3)
38#define __DCL_TRACE4_N(fmt, arg1, arg2, arg3, arg4)
46#define __SET_ERROR_HANDLE(_error, _status, _OCIError) \
47 conn()->setErrorHandle(_error, _status, _OCIError, \
48 true, __THIS_FILE__, __LINE__)
49#define __SET_ERROR_MSG(_msg) \
50 conn()->setErrorMessage(_msg, __THIS_FILE__, __LINE__)
58 __inputIndicator = -1;
68 conn()->DescriptorFree(
84 return (
OciQuery*)Param::__queryHandle;
89 Param::__queryHandle = _queryHandle;
99 && (__inputValue || __inputStream)) {
102 sword status = OCILobWrite(
104 conn()->errorHandle(),
105 (OCILobLocator*)__data.desc,
112 (OCICallbackLobWrite)
NULL,
116 __DCL_TRACE2_N(L
"OCILobWrite [%d] byte_amt[%d]\n", status, byte_amt);
117 if (status != OCI_SUCCESS) {
128 n = __inputStream->read(buf, n);
131 ub1 piece = OCI_ONE_PIECE;
133 piece = n <
sizeof(buf) ? OCI_ONE_PIECE : OCI_FIRST_PIECE;
136 piece = n <
sizeof(buf) ? OCI_LAST_PIECE : OCI_NEXT_PIECE;
139 sword status = OCILobWrite(
141 conn()->errorHandle(),
142 (OCILobLocator*)__data.desc,
149 (OCICallbackLobWrite)
NULL,
153 __DCL_TRACE2_N(L
"OCILobWrite [%d] byte_amt[%d]\n", status, byte_amt);
154 if (status != OCI_SUCCESS) {
169 __inputIndicator = -1;
170 __inputStream =
NULL;
217 if (Param::__dataType != _sqlType) {
250 ub4 descType = OCI_DTYPE_TIMESTAMP;
253 descType = OCI_DTYPE_TIMESTAMP_TZ;
260 if (status != OCI_SUCCESS) {
277 ub4 descType = OCI_DTYPE_INTERVAL_DS;
280 descType = OCI_DTYPE_INTERVAL_YM;
285 OCI_DTYPE_INTERVAL_DS
287 if (status != OCI_SUCCESS) {
329 if (status != OCI_SUCCESS) {
346 Param::__dataType = _sqlType;
358 __inputIndicator = -1;
384 if (Param::__dataType != _sqlType) {
394 if (_size <=
sizeof(int64_t )) {
395 uword sign = OCI_NUMBER_SIGNED;
397 sign = OCI_NUMBER_UNSIGNED;
399 sword status = OCINumberFromInt(
400 conn()->errorHandle(),
406 if (status != OCI_SUCCESS) {
414 else if (_size ==
sizeof(int64_t)) {
421 status = OCINumberFromText(
422 conn()->errorHandle(),
423 (CONST OraText*)str.data(),
431 if (status != OCI_SUCCESS) {
448 if (_size <=
sizeof(
double)) {
449 sword status = OCINumberFromReal(
450 conn()->errorHandle(),
455 if (status != OCI_SUCCESS) {
472 memset(&__data.date, 0,
sizeof(OCIDate));
520 sword status = OCINumberFromText(
521 conn()->errorHandle(),
522 (CONST OraText*)_val,
530 if (status != OCI_SUCCESS) {
570 if (status != OCI_SUCCESS) {
626 if (status != OCI_SUCCESS) {
653 Param::__dataType = _sqlType;
654 __inputIndicator = 0;
660 return n < 0 ? -n : n;
670 sword status = OCI_SUCCESS;
674 ub4 descType = OCI_DTYPE_TIMESTAMP;
677 descType = OCI_DTYPE_TIMESTAMP_TZ;
684 if (status != OCI_SUCCESS) {
698 strTz = ByteString::format(
704 pTz = (OraText*)strTz.data();
705 nTzLen = strTz.length();
708 status = OCIDateTimeConstruct(
709 conn()->sessionHandle(),
710 conn()->errorHandle(),
711 (OCIDateTime*)__data.desc,
722 if (status != OCI_SUCCESS) {
738 sword status = OCI_SUCCESS;
742 ub4 descType = OCI_DTYPE_INTERVAL_DS;
745 descType = OCI_DTYPE_INTERVAL_YM;
752 if (status != OCI_SUCCESS) {
765 status = OCIIntervalFromText(
766 conn()->sessionHandle(),
767 conn()->errorHandle(),
768 (CONST OraText*)
"0-0",
770 (OCIInterval*)__data.desc
772 if (status == OCI_SUCCESS)
773 status = OCIIntervalSetYearMonth(
774 conn()->sessionHandle(),
775 conn()->errorHandle(),
778 (OCIInterval*)__data.desc
782 status = OCIIntervalFromText(
783 conn()->sessionHandle(),
784 conn()->errorHandle(),
785 (CONST OraText*)
"0 00:00:00",
787 (OCIInterval*)__data.desc
789 if (status == OCI_SUCCESS)
790 status = OCIIntervalSetDaySecond(
791 conn()->sessionHandle(),
792 conn()->errorHandle(),
798 (OCIInterval*)__data.desc
801#if defined(__DCL_DEBUG) && 1
802 if (status == OCI_SUCCESS) {
804 status = OCIIntervalCheck(
805 conn()->sessionHandle(),
806 conn()->errorHandle(),
807 (CONST OCIInterval*)__data.desc,
813 if (status != OCI_SUCCESS) {
833 OCIBind* bindp =
NULL;
834 sword status = OCIBindByPos(
835 query()->stmtHandle(),
837 conn()->errorHandle(),
849 if (status != OCI_SUCCESS) {
857 status = OCIBindDynamic(
859 conn()->errorHandle(),
865 if (status != OCI_SUCCESS) {
887 return ((
OciParam*)_ictxp)->inbindCallback(
910 return ((
OciParam*)_octxp)->outbindCallback(
934#if defined(__DCL_DEBUG) && 0
939 case OCI_FIRST_PIECE:
950 if (__inputIndicator == -1) {
953 *_piecep = OCI_ONE_PIECE;
954 *_indpp = &__inputIndicator;
962 *_bufpp = __data.desc;
963 *_alenp =
sizeof(
void*);
967 __inputIndicator = -1;
971 *_piecep = OCI_ONE_PIECE;
972 *_indpp = &__inputIndicator;
995 read = __inputStream->read(__buffer, read);
1004 if (*_piecep == OCI_FIRST_PIECE) {
1006 *_piecep = OCI_ONE_PIECE;
1011 *_piecep = OCI_LAST_PIECE;
1024 *_piecep = OCI_ONE_PIECE;
1025 *_indpp = &__inputIndicator;
1028 return OCI_CONTINUE;
1044#if defined(__DCL_DEBUG) && 0
1047 ub4 size =
sizeof(rows);
1048 sword status = OCIAttrGet(
1053 OCI_ATTR_ROWS_RETURNED,
1054 conn()->errorHandle()
1057 if (status != OCI_SUCCESS) {
1062 case OCI_ONE_PIECE :
1065 case OCI_FIRST_PIECE :
1068 case OCI_NEXT_PIECE :
1071 case OCI_LAST_PIECE :
1080 if (*_piecep == OCI_ONE_PIECE)
1081 *_piecep = OCI_FIRST_PIECE;
1083 if (*_piecep == OCI_FIRST_PIECE) {
1140 *_bufpp = __data.desc;
1149 *_piecep = OCI_ONE_PIECE;
1155 return OCI_CONTINUE;
#define __DCL_TRACE1_N(fmt, arg)
#define __DCL_TRACE2_N(fmt, arg1, arg2)
#define __SET_ERROR_MSG(_message)
#define __SET_ERROR_HANDLE(_SQLCODE)
#define __DCL_VERIFY(expr)
#define __DCL_ASSERT(expr)
#define IMPLEMENT_CLASSINFO(class_name, base_class_name)
#define __DYNAMIC_BUFFER_SIZE
String toStringAll() const
static ByteString toByteString(int64_t _n, unsigned _base=10)
sword DescriptorAlloc(void **_descpp, ub4 _type, size_t _xtramem_sz=0, void **_usrmempp=NULL)
virtual OciQuery * query() const =0
bool getDataSize(size_t *_size, bool _maxsize)
bool getData(void *_buf, size_t *_size, SQL::DataType _bufType)
ub4 __callbackActualLength
OciConnection * conn() const
BytesOutputStream * __bytesOutput
const wchar_t * serverDataTypeName() const
static sb4 inbindCallback(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 __setData(_CONST void *_val, size_t _size, SQL::DataType _valType, SQL::DataType _sqlType)
static sb4 outbindCallback(dvoid *_octxp, OCIBind *_bindp, ub4 _iter, ub4 _index, dvoid **_bufpp, ub4 **_alenpp, ub1 *_piecep, dvoid **_indpp, ub2 **_rcodepp)
virtual bool __setOutputType(SQL::DataType _sqlType)
virtual const wchar_t * serverDataTypeName() const
bool setInterval(const SQL::Interval *_val, size_t _size, SQL::DataType _sqlType)
virtual bool __getData(void *_buf, size_t *_size, SQL::DataType _bufType)
virtual bool __getDataSize(size_t *_size, bool _maxsize)
bool setTimeStamp(const SQL::TimeStamp *_val, size_t _size, SQL::DataType _sqlType)
static ByteString toByteString(uint64_t _u, unsigned _base=10)
size_t __MIN(size_t x, size_t y)