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);
196 __sqlvar->sqldata = (
char*)&__data;
197 __sqlvar->sqltype = CDTIMETYPE;
198 __sqlvar->sqllen =
sizeof(dtime_t);
218 __sqlvar->sqldata = (
char*)&__data;
219 __sqlvar->sqltype = CINVTYPE;
220 __sqlvar->sqllen =
sizeof(intrvl_t);
231 int r = deccvasc((
char*)_pv, _size, &__data.dec);
236 __sqlvar->sqldata = (
char*)&__data;
237 __sqlvar->sqltype = CDECIMALTYPE;
238 __sqlvar->sqllen =
sizeof(dec_t);
263 Param::__dataType = _assignType;
272 case sizeof(int8_t) : {
273 __data.i32 = (int32_t) * (int8_t*)_pv;
274 __sqlvar->sqltype = CLONGTYPE;
275 __sqlvar->sqllen =
sizeof(int32_t);
278 case sizeof(int16_t) : {
279 __data.i32 = (int32_t) * (int16_t*)_pv;
280 __sqlvar->sqltype = CLONGTYPE;
281 __sqlvar->sqllen =
sizeof(int32_t);
284 case sizeof(int32_t) : {
285 __data.i32 = *(int32_t*)_pv;
286 __sqlvar->sqltype = CLONGTYPE;
287 __sqlvar->sqllen =
sizeof(int32_t);
290 case sizeof(int64_t) : {
291 __data.i64 = *(int64_t*)_pv;
292 __sqlvar->sqltype = CBIGINTTYPE;
293 __sqlvar->sqllen =
sizeof(bigint);
301 __sqlvar->sqldata = (
char*)&__data;
307 switch (__sqltype & SQLTYPE) {
312 case sizeof(uint8_t) : {
313 __data.i32 = (int32_t) * (uint8_t*)_pv;
314 __sqlvar->sqltype = CLONGTYPE;
315 __sqlvar->sqllen =
sizeof(int32_t);
318 case sizeof(uint16_t) : {
319 __data.i32 = (int32_t) * (uint16_t*)_pv;
320 __sqlvar->sqltype = CLONGTYPE;
321 __sqlvar->sqllen =
sizeof(int32_t);
324 case sizeof(uint32_t) : {
325 __data.i32 = (int32_t) * (uint32_t*)_pv;
326 __sqlvar->sqltype = CLONGTYPE;
327 __sqlvar->sqllen =
sizeof(int32_t);
330 case sizeof(uint64_t) : {
331 __data.i64 = (int64_t) * (uint32_t*)_pv;
332 __sqlvar->sqltype = CBIGINTTYPE;
333 __sqlvar->sqllen =
sizeof(bigint);
348 case sizeof(uint8_t) : {
349 __data.i64 = (int64_t) * (uint8_t*)_pv;
350 __sqlvar->sqltype = CBIGINTTYPE;
351 __sqlvar->sqllen =
sizeof(int32_t);
354 case sizeof(uint16_t) : {
355 __data.i64 = (int64_t) * (uint16_t*)_pv;
356 __sqlvar->sqltype = CBIGINTTYPE;
357 __sqlvar->sqllen =
sizeof(int32_t);
360 case sizeof(uint32_t) : {
361 __data.i64 = (int64_t) * (uint32_t*)_pv;
362 __sqlvar->sqltype = CBIGINTTYPE;
363 __sqlvar->sqllen =
sizeof(int32_t);
366 case sizeof(uint64_t) : {
367 __data.i64 = (int64_t) * (uint32_t*)_pv;
368 __sqlvar->sqltype = CBIGINTTYPE;
369 __sqlvar->sqllen =
sizeof(bigint);
385 __sqlvar->sqldata = (
char*)&__data;
392 switch (__sqltype & SQLTYPE) {
399 switch (_assignType) {
403 __data.loc.loc_type = SQLTEXT;
409 __data.loc.loc_type = SQLBYTES;
417 __data.loc.loc_loctype = LOCMEMORY;
418 __data.loc.loc_indicator = 0;
420 __data.loc.loc_mflags = 0;
421 __data.loc.loc_oflags = LOC_WONLY;
423 __data.loc.loc_buffer = (
char*)_pv;
424 __data.loc.loc_bufsize = _size;
425 __data.loc.loc_size = _size;
427 __sqlvar->sqltype = CLOCATORTYPE;
428 __sqlvar->sqllen =
sizeof(loc_t);
429 __sqlvar->sqldata = (
char*)&__data.loc;
433 switch (_assignType) {
437 __sqlvar->sqltype = CFIXCHARTYPE;
443 __sqlvar->sqltype = CFIXBINTYPE;
451 __sqlvar->sqldata = (
char*)_pv;
452 __sqlvar->sqllen = _size;
458static mint on_loc_open(loc_t* loc,
mint flag,
mint bsize);
459static mint on_loc_read(loc_t* loc,
char* buffer,
mint buflen);
460static mint on_loc_close(loc_t* loc);
465 if (_size != (
size_t)-1 && _size >
INT32_MAX) {
470 switch (_assignType) {
474 __data.loc.loc_type = SQLTEXT;
480 __data.loc.loc_type = SQLBYTES;
489 __data.loc.loc_open = on_loc_open;
490 __data.loc.loc_read = on_loc_read;
491 __data.loc.loc_close = on_loc_close;
492 __data.loc.loc_write =
NULL;
494 __data.loc.loc_loctype = LOCUSER;
495 __data.loc.loc_indicator = 0;
497 __data.loc.loc_mflags = 0;
498 __data.loc.loc_oflags = LOC_WONLY;
500 __data.loc.loc_user_env = (
char*)_pv;
501 __data.loc.loc_size = _size;
503 __sqlvar->sqldata = (
char*)&__data;
504 __sqlvar->sqltype = CLOCATORTYPE;
505 __sqlvar->sqllen =
sizeof(loc_t);
512static mint on_loc_open(loc_t* loc,
mint flag,
mint bsize)
515 loc->loc_xfercount = 0L;
528 return x < y ? x : y;
531static mint on_loc_read(loc_t* loc,
char* buffer,
mint buflen)
533 mint nToRead = buflen;
534 if (loc->loc_size != -1)
535 nToRead =
__MIN(buflen, loc->loc_size - loc->loc_xfercount);
540 nRead = pInput->read(buffer, (
size_t)nToRead);
544 loc->loc_status = -454;
547 loc->loc_xfercount += nRead;
551static 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)