15#if __DCL_HAVE_ALLOC_DEBUG
16#undef __DCL_ALLOC_LEVEL
17#define __DCL_ALLOC_LEVEL __DCL_ALLOC_INTERNAL
30#define __DCL_TRACE0_N __DCL_TRACE0
31#define __DCL_TRACE1_N __DCL_TRACE1
32#define __DCL_TRACE2_N __DCL_TRACE2
33#define __DCL_TRACE3_N __DCL_TRACE3
34#define __DCL_TRACE4_N __DCL_TRACE4
36#define __DCL_TRACE0_N(fmt)
37#define __DCL_TRACE1_N(fmt, arg)
38#define __DCL_TRACE2_N(fmt, arg1, arg2)
39#define __DCL_TRACE3_N(fmt, arg1, arg2, arg3)
40#define __DCL_TRACE4_N(fmt, arg1, arg2, arg3, arg4)
48#define __SET_ERROR(_error) \
49 conn()->setErrorHandle(_error, 0L, __THIS_FILE__, __LINE__)
50#define __SET_ERROR_HANDLE(_SQLCODE) \
51 conn()->setErrorHandle(SQL::eServerError, _SQLCODE, __THIS_FILE__, __LINE__)
52#define __SET_ERROR_MSG(_message) \
53 conn()->setErrorMessage(_message, __THIS_FILE__, __LINE__)
70 Param::__queryHandle = _queryHandle;
72 __sqltype = _sqlvar->sqltype;
73 __sqllen = _sqlvar->sqllen;
76 __sqlvar->sqldata =
NULL;
77 __sqlvar->sqlind = &__indicator;
85 if (__sqlvar->sqltype == CLOCATORTYPE && __sqlvar->sqldata) {
86 loc_t*
loc = (loc_t*)(__sqlvar->sqldata);
87 if (
loc->loc_status != 0) {
95 __sqlvar->sqldata =
NULL;
112 __sqlvar->sqldata =
NULL;
133 if (_size ==
sizeof(
float)) {
134 __data.f32 = *(
float*)_val;
135 __sqlvar->sqldata = (
char*)&__data;
136 __sqlvar->sqltype = CFLOATTYPE;
137 __sqlvar->sqllen =
sizeof(float);
139 else if (_size ==
sizeof(
double)) {
140 __data.f64 = *(
double*)_val;
141 __sqlvar->sqldata = (
char*)&__data;
142 __sqlvar->sqltype = CDOUBLETYPE;
143 __sqlvar->sqllen =
sizeof(double);
159 int r = rmdyjul(mdy, &__data.date);
164 __sqlvar->sqldata = (
char*)&__data;
165 __sqlvar->sqltype = CDATETYPE;
166 __sqlvar->sqllen =
sizeof(long);
183 __sqlvar->sqldata = (
char*)&__data;
184 __sqlvar->sqltype = CDTIMETYPE;
185 __sqlvar->sqllen =
sizeof(dtime_t);
202 __sqlvar->sqldata = (
char*)&__data;
203 __sqlvar->sqltype = CDTIMETYPE;
204 __sqlvar->sqllen =
sizeof(dtime_t);
224 __sqlvar->sqldata = (
char*)&__data;
225 __sqlvar->sqltype = CINVTYPE;
226 __sqlvar->sqllen =
sizeof(intrvl_t);
237 int r = deccvasc((
char*)_val, _size, &__data.dec);
242 __sqlvar->sqldata = (
char*)&__data;
243 __sqlvar->sqltype = CDECIMALTYPE;
244 __sqlvar->sqllen =
sizeof(dec_t);
269 Param::__dataType = _sqlType;
278 case sizeof(int8_t) : {
279 __data.i32 = (int32_t) * (int8_t*)_val;
280 __sqlvar->sqltype = CLONGTYPE;
281 __sqlvar->sqllen =
sizeof(int32_t);
284 case sizeof(int16_t) : {
285 __data.i32 = (int32_t) * (int16_t*)_val;
286 __sqlvar->sqltype = CLONGTYPE;
287 __sqlvar->sqllen =
sizeof(int32_t);
290 case sizeof(int32_t) : {
291 __data.i32 = *(int32_t*)_val;
292 __sqlvar->sqltype = CLONGTYPE;
293 __sqlvar->sqllen =
sizeof(int32_t);
296 case sizeof(int64_t) : {
297 __data.i64 = *(int64_t*)_val;
298 __sqlvar->sqltype = CBIGINTTYPE;
299 __sqlvar->sqllen =
sizeof(bigint);
307 __sqlvar->sqldata = (
char*)&__data;
313 switch (__sqltype & SQLTYPE) {
318 case sizeof(uint8_t) : {
319 __data.i32 = (int32_t) * (uint8_t*)_val;
320 __sqlvar->sqltype = CLONGTYPE;
321 __sqlvar->sqllen =
sizeof(int32_t);
324 case sizeof(uint16_t) : {
325 __data.i32 = (int32_t) * (uint16_t*)_val;
326 __sqlvar->sqltype = CLONGTYPE;
327 __sqlvar->sqllen =
sizeof(int32_t);
330 case sizeof(uint32_t) : {
331 __data.i32 = (int32_t) * (uint32_t*)_val;
332 __sqlvar->sqltype = CLONGTYPE;
333 __sqlvar->sqllen =
sizeof(int32_t);
336 case sizeof(uint64_t) : {
337 __data.i64 = (int64_t) * (uint32_t*)_val;
338 __sqlvar->sqltype = CBIGINTTYPE;
339 __sqlvar->sqllen =
sizeof(bigint);
354 case sizeof(uint8_t) : {
355 __data.i64 = (int64_t) * (uint8_t*)_val;
356 __sqlvar->sqltype = CBIGINTTYPE;
357 __sqlvar->sqllen =
sizeof(int32_t);
360 case sizeof(uint16_t) : {
361 __data.i64 = (int64_t) * (uint16_t*)_val;
362 __sqlvar->sqltype = CBIGINTTYPE;
363 __sqlvar->sqllen =
sizeof(int32_t);
366 case sizeof(uint32_t) : {
367 __data.i64 = (int64_t) * (uint32_t*)_val;
368 __sqlvar->sqltype = CBIGINTTYPE;
369 __sqlvar->sqllen =
sizeof(int32_t);
372 case sizeof(uint64_t) : {
373 __data.i64 = (int64_t) * (uint32_t*)_val;
374 __sqlvar->sqltype = CBIGINTTYPE;
375 __sqlvar->sqllen =
sizeof(bigint);
391 __sqlvar->sqldata = (
char*)&__data;
398 switch (__sqltype & SQLTYPE) {
409 __data.loc.loc_type = SQLTEXT;
415 __data.loc.loc_type = SQLBYTES;
423 __data.loc.loc_loctype = LOCMEMORY;
424 __data.loc.loc_indicator = 0;
426 __data.loc.loc_mflags = 0;
427 __data.loc.loc_oflags = LOC_WONLY;
429 __data.loc.loc_buffer = (
char*)_val;
430 __data.loc.loc_bufsize = _size;
431 __data.loc.loc_size = _size;
433 __sqlvar->sqltype = CLOCATORTYPE;
434 __sqlvar->sqllen =
sizeof(loc_t);
435 __sqlvar->sqldata = (
char*)&__data.loc;
443 __sqlvar->sqltype = CFIXCHARTYPE;
449 __sqlvar->sqltype = CFIXBINTYPE;
457 __sqlvar->sqldata = (
char*)_val;
458 __sqlvar->sqllen = _size;
464static mint on_loc_open(loc_t* _loc,
mint _flag,
mint _bsize);
465static mint on_loc_read(loc_t* _loc,
char* _val,
mint _buflen);
466static mint on_loc_close(loc_t* _loc);
471 if (_size != (
size_t)-1 && _size >
INT32_MAX) {
480 __data.loc.loc_type = SQLTEXT;
486 __data.loc.loc_type = SQLBYTES;
495 __data.loc.loc_open = on_loc_open;
496 __data.loc.loc_read = on_loc_read;
497 __data.loc.loc_close = on_loc_close;
498 __data.loc.loc_write =
NULL;
500 __data.loc.loc_loctype = LOCUSER;
501 __data.loc.loc_indicator = 0;
503 __data.loc.loc_mflags = 0;
504 __data.loc.loc_oflags = LOC_WONLY;
506 __data.loc.loc_user_env = (
char*)_val;
507 __data.loc.loc_size = _size;
509 __sqlvar->sqldata = (
char*)&__data;
510 __sqlvar->sqltype = CLOCATORTYPE;
511 __sqlvar->sqllen =
sizeof(loc_t);
518static mint on_loc_open(loc_t* _loc,
mint _flag,
mint _bsize)
520 _loc->loc_status = 0;
521 _loc->loc_xfercount = 0L;
534 return _x < _y ? _x : _y;
537static mint on_loc_read(loc_t* _loc,
char* _val,
mint _buflen)
539 mint nToRead = _buflen;
540 if (_loc->loc_size != -1)
541 nToRead =
__MIN(_buflen, _loc->loc_size - _loc->loc_xfercount);
546 nRead = pInput->read(_val, (
size_t)nToRead);
550 _loc->loc_status = -454;
553 _loc->loc_xfercount += nRead;
557static mint on_loc_close(loc_t* _loc)
559 _loc->loc_status = 0;
#define __SET_ERROR_HANDLE(_SQLCODE)
const wchar_t * __dataTypeName(const ifx_sqlvar_t *_sqlvar)
const wchar_t * __dataTypeName(const ifx_sqlvar_t *_sqlvar)
mint __MIN(mint _x, mint _y)
int __encode_intrvl(const SQL::Interval *_s, SQL::DataType _sqlType, intrvl_t *_r)
int __encode_dtime(const SQL::TimeStamp *_s, dtime_t *_r)
#define __DCL_ASSERT(expr)
#define IMPLEMENT_CLASSINFO(class_name, base_class_name)
#define __SET_ERROR(_errorCode)
bool setInteger(const void *_val, size_t _size)
bool init(SQL::Query *_query, ifx_sqlvar_t *_sqlvar)
virtual bool __setData(_CONST void *_val, size_t _size, SQL::DataType _valType, SQL::DataType _sqlType)
bool setInputStream(const void *_val, size_t _size, SQL::DataType _sqlType)
bool setUInteger(const void *_val, size_t _size)
virtual const wchar_t * serverDataTypeName() const
bool setBytes(const void *_val, size_t _size, SQL::DataType _sqlType)