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)
63 Param::__queryHandle = _queryHandle;
65 __sqltype = _sqlvar->sqltype;
66 __sqllen = _sqlvar->sqllen;
69 __sqlvar->sqldata =
NULL;
70 __sqlvar->sqlind = &__indicator;
78 if (__sqlvar->sqltype == CLOCATORTYPE && __sqlvar->sqldata) {
79 loc_t*
loc = (loc_t*)(__sqlvar->sqldata);
80 if (
loc->loc_status != 0) {
88 __sqlvar->sqldata =
NULL;
106 __sqlvar->sqldata =
NULL;
127 if (_size ==
sizeof(
float)) {
128 __data.f32 = *(
float*)_pv;
129 __sqlvar->sqldata = (
char*)&__data;
130 __sqlvar->sqltype = CFLOATTYPE;
131 __sqlvar->sqllen =
sizeof(float);
133 else if (_size ==
sizeof(
double)) {
134 __data.f64 = *(
double*)_pv;
135 __sqlvar->sqldata = (
char*)&__data;
136 __sqlvar->sqltype = CDOUBLETYPE;
137 __sqlvar->sqllen =
sizeof(double);
153 int r = rmdyjul(mdy, &__data.date);
158 __sqlvar->sqldata = (
char*)&__data;
159 __sqlvar->sqltype = CDATETYPE;
160 __sqlvar->sqllen =
sizeof(long);
177 __sqlvar->sqldata = (
char*)&__data;
178 __sqlvar->sqltype = CDTIMETYPE;
179 __sqlvar->sqllen =
sizeof(dtime_t);
201 __sqlvar->sqldata = (
char*)&__data;
202 __sqlvar->sqltype = CDTIMETYPE;
203 __sqlvar->sqllen =
sizeof(dtime_t);
225 __sqlvar->sqldata = (
char*)&__data;
226 __sqlvar->sqltype = CINVTYPE;
227 __sqlvar->sqllen =
sizeof(intrvl_t);
238 int r = deccvasc((
char*)_pv, _size, &__data.dec);
243 __sqlvar->sqldata = (
char*)&__data;
244 __sqlvar->sqltype = CDECIMALTYPE;
245 __sqlvar->sqllen =
sizeof(dec_t);
270 Param::__dataType = _assignType;
279 case sizeof(int8_t) : {
280 __data.i32 = (int32_t) * (int8_t*)_pv;
281 __sqlvar->sqltype = CLONGTYPE;
282 __sqlvar->sqllen =
sizeof(int32_t);
285 case sizeof(int16_t) : {
286 __data.i32 = (int32_t) * (int16_t*)_pv;
287 __sqlvar->sqltype = CLONGTYPE;
288 __sqlvar->sqllen =
sizeof(int32_t);
291 case sizeof(int32_t) : {
292 __data.i32 = *(int32_t*)_pv;
293 __sqlvar->sqltype = CLONGTYPE;
294 __sqlvar->sqllen =
sizeof(int32_t);
297 case sizeof(int64_t) : {
298 __data.i64 = *(int64_t*)_pv;
299 __sqlvar->sqltype = CBIGINTTYPE;
300 __sqlvar->sqllen =
sizeof(bigint);
308 __sqlvar->sqldata = (
char*)&__data;
314 switch (__sqltype & SQLTYPE) {
319 case sizeof(uint8_t) : {
320 __data.i32 = (int32_t) * (uint8_t*)_pv;
321 __sqlvar->sqltype = CLONGTYPE;
322 __sqlvar->sqllen =
sizeof(int32_t);
325 case sizeof(uint16_t) : {
326 __data.i32 = (int32_t) * (uint16_t*)_pv;
327 __sqlvar->sqltype = CLONGTYPE;
328 __sqlvar->sqllen =
sizeof(int32_t);
331 case sizeof(uint32_t) : {
332 __data.i32 = (int32_t) * (uint32_t*)_pv;
333 __sqlvar->sqltype = CLONGTYPE;
334 __sqlvar->sqllen =
sizeof(int32_t);
337 case sizeof(uint64_t) : {
338 __data.i64 = (int64_t) * (uint32_t*)_pv;
339 __sqlvar->sqltype = CBIGINTTYPE;
340 __sqlvar->sqllen =
sizeof(bigint);
355 case sizeof(uint8_t) : {
356 __data.i64 = (int64_t) * (uint8_t*)_pv;
357 __sqlvar->sqltype = CBIGINTTYPE;
358 __sqlvar->sqllen =
sizeof(int32_t);
361 case sizeof(uint16_t) : {
362 __data.i64 = (int64_t) * (uint16_t*)_pv;
363 __sqlvar->sqltype = CBIGINTTYPE;
364 __sqlvar->sqllen =
sizeof(int32_t);
367 case sizeof(uint32_t) : {
368 __data.i64 = (int64_t) * (uint32_t*)_pv;
369 __sqlvar->sqltype = CBIGINTTYPE;
370 __sqlvar->sqllen =
sizeof(int32_t);
373 case sizeof(uint64_t) : {
374 __data.i64 = (int64_t) * (uint32_t*)_pv;
375 __sqlvar->sqltype = CBIGINTTYPE;
376 __sqlvar->sqllen =
sizeof(bigint);
392 __sqlvar->sqldata = (
char*)&__data;
399 switch (__sqltype & SQLTYPE) {
406 switch (_assignType) {
410 __data.loc.loc_type = SQLTEXT;
416 __data.loc.loc_type = SQLBYTES;
424 __data.loc.loc_loctype = LOCMEMORY;
425 __data.loc.loc_indicator = 0;
427 __data.loc.loc_mflags = 0;
428 __data.loc.loc_oflags = LOC_WONLY;
430 __data.loc.loc_buffer = (
char*)_pv;
431 __data.loc.loc_bufsize = _size;
432 __data.loc.loc_size = _size;
434 __sqlvar->sqltype = CLOCATORTYPE;
435 __sqlvar->sqllen =
sizeof(loc_t);
436 __sqlvar->sqldata = (
char*)&__data.loc;
440 switch (_assignType) {
444 __sqlvar->sqltype = CFIXCHARTYPE;
450 __sqlvar->sqltype = CFIXBINTYPE;
458 __sqlvar->sqldata = (
char*)_pv;
459 __sqlvar->sqllen = _size;
465static mint on_loc_open(loc_t* loc,
mint flag,
mint bsize);
466static mint on_loc_read(loc_t* loc,
char* buffer,
mint buflen);
467static mint on_loc_close(loc_t* loc);
472 if (_size != (
size_t)-1 && _size >
INT32_MAX) {
477 switch (_assignType) {
481 __data.loc.loc_type = SQLTEXT;
487 __data.loc.loc_type = SQLBYTES;
496 __data.loc.loc_open = on_loc_open;
497 __data.loc.loc_read = on_loc_read;
498 __data.loc.loc_close = on_loc_close;
499 __data.loc.loc_write =
NULL;
501 __data.loc.loc_loctype = LOCUSER;
502 __data.loc.loc_indicator = 0;
504 __data.loc.loc_mflags = 0;
505 __data.loc.loc_oflags = LOC_WONLY;
507 __data.loc.loc_user_env = (
char*)_pv;
508 __data.loc.loc_size = _size;
510 __sqlvar->sqldata = (
char*)&__data;
511 __sqlvar->sqltype = CLOCATORTYPE;
512 __sqlvar->sqllen =
sizeof(loc_t);
519static mint on_loc_open(loc_t* loc,
mint flag,
mint bsize)
522 loc->loc_xfercount = 0L;
535 return x < y ? x : y;
538static mint on_loc_read(loc_t* loc,
char* buffer,
mint buflen)
540 mint nToRead = buflen;
541 if (loc->loc_size != -1)
542 nToRead =
__MIN(buflen, loc->loc_size - loc->loc_xfercount);
547 nRead = pInput->read(buffer, (
size_t)nToRead);
551 loc->loc_status = -454;
554 loc->loc_xfercount += nRead;
558static mint on_loc_close(loc_t* loc)
#define __SET_ERROR_SQLCODE(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_dtime(const SQL::TimeStamp *_s, dtime_t *_r)
int __encode_intrvl(const SQL::Interval *_s, SQL::DataType _dataType, intrvl_t *_r)
#define __DCL_ASSERT(expr)
#define IMPLEMENT_CLASSINFO(class_name, base_class_name)
#define __SET_ERROR(_errorCode)
bool init(SQL::Query *_query, ifx_sqlvar_t *_sqlvar)
bool setBytes(const void *_pv, size_t _size, SQL::DataType _assignType)
bool setInteger(const void *_pv, size_t _size)
virtual bool __setData(_CONST void *_pv, size_t _size, SQL::DataType _dataType, SQL::DataType _assignType)
virtual const wchar_t * serverDataTypeName() const
bool setUInteger(const void *_pv, size_t _size)
bool setInputStream(const void *_pv, size_t _size, SQL::DataType _assignType)