9#if __DCL_HAVE_ALLOC_DEBUG
10#undef __DCL_ALLOC_LEVEL
11#define __DCL_ALLOC_LEVEL __DCL_ALLOC_INTERNAL
28#define __SET_ERROR(_error) \
29 conn()->setErrorHandle(_error, __THIS_FILE__, __LINE__)
30#define __SET_ERROR_MSG(_msg) \
31 conn()->setErrorMessage(_msg, __THIS_FILE__, __LINE__)
35#define __SQLTYPE_IS(_sqltype) ((__sqltype & ~1) == _sqltype)
54 Param::__queryHandle = _queryHandle;
57 __sqltype = _sqlvar->sqltype;
60 __sqlvar->sqldata =
NULL;
61 __sqlvar->sqlind = &__indicator;
62 __sqlvar->sqlscale = 0;
71 __sqlvar->sqldata =
NULL;
90 __sqlvar->sqldata =
NULL;
136 __sqlvar->sqldata = (
char*)_val;
137 __sqlvar->sqllen = _size;
138 __sqlvar->sqltype = SQL_TEXT + 1;
161 Param::__dataType = _sqlType;
170 case sizeof(int16_t): {
171 __data.i16 = *(int16_t*)_val;
172 __sqlvar->sqllen =
sizeof(int16_t);
173 __sqlvar->sqltype = SQL_SHORT + 1;
176 case sizeof(int32_t): {
177 __data.i32 = *(int32_t*)_val;
178 __sqlvar->sqllen =
sizeof(int32_t);
179 __sqlvar->sqltype = SQL_LONG + 1;
182 case sizeof(int64_t): {
183 __data.i64 = *(int64_t*)_val;
184 __sqlvar->sqllen =
sizeof(int64_t);
185 __sqlvar->sqltype = SQL_INT64 + 1;
193 __sqlvar->sqldata = (
char*)&__data;
200 case sizeof(uint16_t): {
201 __data.i16 = (int16_t) * (uint16_t*)_val;
202 __sqlvar->sqllen =
sizeof(int16_t);
203 __sqlvar->sqltype = SQL_SHORT + 1;
206 case sizeof(uint32_t): {
207 __data.i32 = (int32_t) * (uint32_t*)_val;
208 __sqlvar->sqllen =
sizeof(int32_t);
209 __sqlvar->sqltype = SQL_LONG + 1;
212 case sizeof(uint64_t) : {
213 __data.i64 = (int64_t) * (uint64_t*)_val;
214 __sqlvar->sqllen =
sizeof(int64_t);
215 __sqlvar->sqltype = SQL_INT64 + 1;
223 __sqlvar->sqldata = (
char*)&__data;
230 case sizeof(float) : {
231 __data.f32 = *(
float*)_val;
232 __sqlvar->sqllen =
sizeof(float);
233 __sqlvar->sqltype = SQL_FLOAT + 1;
236 case sizeof(double) : {
237 __data.f64 = *(
double*)_val;
238 __sqlvar->sqllen =
sizeof(double);
239 __sqlvar->sqltype = SQL_DOUBLE + 1;
247 __sqlvar->sqldata = (
char*)&__data;
259 tm.tm_year = _val->
year - 1900;
260 tm.tm_mon = _val->
month - 1;
261 tm.tm_mday = _val->
day;
263 isc_encode_sql_date(&tm, &__data.date);
265 __sqlvar->sqldata = (
char*)&__data;
266 __sqlvar->sqllen =
sizeof(ISC_DATE);
267 __sqlvar->sqltype = SQL_TYPE_DATE + 1;
279 tm.tm_hour = _val->
hour;
280 tm.tm_min = _val->
min;
281 tm.tm_sec = _val->
sec;
283 isc_encode_sql_time(&tm, &__data.time);
284 __data.time += _val->
frac / 100000;
286 __sqlvar->sqldata = (
char*)&__data;
287 __sqlvar->sqllen =
sizeof(ISC_TIME);
288 __sqlvar->sqltype = SQL_TYPE_TIME + 1;
289#if defined(FIREBIRD_IBASE_H) && FB_API_VER >= 40
291 __data.time_tz.time_zone = 0;
292 __data.time_tz.ext_offset = _val->
tzoff;
293 __sqlvar->sqllen =
sizeof(ISC_TIME_TZ_EX);
294 __sqlvar->sqltype = SQL_TIME_TZ_EX + 1;
308 tm.tm_year = _val->
year - 1900;
309 tm.tm_mon = _val->
month - 1;
310 tm.tm_mday = _val->
day;
311 tm.tm_hour = _val->
hour;
312 tm.tm_min = _val->
min;
313 tm.tm_sec = _val->
sec;
315 isc_encode_timestamp(&tm, &__data.ts);
316 __data.ts.timestamp_time += _val->
frac / 100000;
318 __sqlvar->sqldata = (
char*)&__data;
319 __sqlvar->sqllen =
sizeof(ISC_TIMESTAMP);
320 __sqlvar->sqltype = SQL_TIMESTAMP + 1;
321#if defined(FIREBIRD_IBASE_H) && FB_API_VER >= 40
323 __data.ts_tz.time_zone = 0;
324 __data.ts_tz.ext_offset = _val->
tzoff;
325 __sqlvar->sqllen =
sizeof(ISC_TIMESTAMP_TZ_EX);
326 __sqlvar->sqltype = SQL_TIMESTAMP_TZ_EX + 1;
332inline size_t __MIN(
size_t x,
size_t y)
334 return x < y ? x : y;
341 conn()->statusVector(),
342 conn()->dbHandlePtr(),
343 conn()->trHandlePtr(),
355 while(nTotal < _size) {
356 nBytes =
__MIN(_size - nTotal, USHRT_MAX);
358 conn()->statusVector(),
365 isc_close_blob(status2, &hBlob);
373 if (isc_close_blob(
conn()->statusVector(), &hBlob)) {
378 __sqlvar->sqldata = (
char*)&__data.blob_id;
379 __sqlvar->sqllen =
sizeof(ISC_QUAD);
380 __sqlvar->sqltype = SQL_BLOB + 1;
388 conn()->statusVector(),
389 conn()->dbHandlePtr(),
390 conn()->trHandlePtr(),
400 char* _pbuf = (
char*)malloc(USHRT_MAX);
404 isc_close_blob(status2, &hBlob);
412 nBytes =
__MIN(_size - nTotal, USHRT_MAX);
413 if (nBytes && (nBytes = _input->read(_pbuf, nBytes))) {
415 conn()->statusVector(),
423 isc_close_blob(status2, &hBlob);
439 isc_close_blob(status2, &hBlob);
445 if (isc_close_blob(
conn()->statusVector(), &hBlob)) {
450 __sqlvar->sqldata = (
char*)&__data.blob_id;
451 __sqlvar->sqllen =
sizeof(ISC_QUAD);
452 __sqlvar->sqltype = SQL_BLOB + 1;
462 conn()->statusVector(),
463 conn()->dbHandlePtr(),
464 conn()->trHandlePtr(),
475 conn()->statusVector(),
#define ISC_STATUS_VECTOR_LENGTH
const wchar_t * __dataTypeName(const XSQLVAR *_sqlvar)
size_t __MIN(size_t x, size_t y)
#define __SET_ERROR_MSG(_message)
const wchar_t * __dataTypeName(const ifx_sqlvar_t *_sqlvar)
#define __SQLTYPE_IS(_sqltype)
#define __DCL_VERIFY(expr)
#define __DCL_ASSERT(expr)
#define IMPLEMENT_CLASSINFO(class_name, base_class_name)
#define __SET_ERROR(_errorCode)
String toStringAll() const
IBConnection * conn() const
virtual const wchar_t * serverDataTypeName() const
bool setTimeStamp(const SQL::TimeStamp *_val, size_t _size)
bool init(SQL::Query *_query, XSQLVAR *_sqlvar)
bool setTime(const SQL::Time *_val, size_t _size)
bool setInputStreamToBlob(_CONST InputStream *_input, size_t _size)
bool setUInteger(const void *_val, size_t _size)
bool setInteger(const void *_val, size_t _size)
bool setFloat(const void *_val, size_t _size)
bool setBytesToBlob(const byte_t *_val, size_t _size)
virtual bool __setData(_CONST void *_val, size_t _size, SQL::DataType _valType, SQL::DataType _sqlType)
bool setDate(const SQL::Date *_val, size_t _size)
size_t __MIN(size_t x, size_t y)