9#if __DCL_HAVE_ALLOC_DEBUG
10#undef __DCL_ALLOC_LEVEL
11#define __DCL_ALLOC_LEVEL __DCL_ALLOC_INTERNAL
30#define __SQLTYPE_IS(_sqltype) ((__sqltype & ~1) == _sqltype)
49 Param::__queryHandle = _queryHandle;
52 __sqltype = _sqlvar->sqltype;
55 __sqlvar->sqldata =
NULL;
56 __sqlvar->sqlind = &__indicator;
57 __sqlvar->sqlscale = 0;
66 __sqlvar->sqldata =
NULL;
85 __sqlvar->sqldata =
NULL;
131 __sqlvar->sqldata = (
char*)_value;
132 __sqlvar->sqllen = _size;
133 __sqlvar->sqltype = SQL_TEXT + 1;
156 Param::__dataType = _dataType;
165 case sizeof(int16_t): {
166 __data.i16 = *(int16_t*)_value;
167 __sqlvar->sqllen =
sizeof(int16_t);
168 __sqlvar->sqltype = SQL_SHORT + 1;
171 case sizeof(int32_t): {
172 __data.i32 = *(int32_t*)_value;
173 __sqlvar->sqllen =
sizeof(int32_t);
174 __sqlvar->sqltype = SQL_LONG + 1;
177 case sizeof(int64_t): {
178 __data.i64 = *(int64_t*)_value;
179 __sqlvar->sqllen =
sizeof(int64_t);
180 __sqlvar->sqltype = SQL_INT64 + 1;
188 __sqlvar->sqldata = (
char*)&__data;
195 case sizeof(uint16_t): {
196 __data.i16 = (int16_t) * (uint16_t*)_value;
197 __sqlvar->sqllen =
sizeof(int16_t);
198 __sqlvar->sqltype = SQL_SHORT + 1;
201 case sizeof(uint32_t): {
202 __data.i32 = (int32_t) * (uint32_t*)_value;
203 __sqlvar->sqllen =
sizeof(int32_t);
204 __sqlvar->sqltype = SQL_LONG + 1;
207 case sizeof(uint64_t) : {
208 __data.i64 = (int64_t) * (uint64_t*)_value;
209 __sqlvar->sqllen =
sizeof(int64_t);
210 __sqlvar->sqltype = SQL_INT64 + 1;
218 __sqlvar->sqldata = (
char*)&__data;
225 case sizeof(float) : {
226 __data.f32 = *(
float*)_value;
227 __sqlvar->sqllen =
sizeof(float);
228 __sqlvar->sqltype = SQL_FLOAT + 1;
231 case sizeof(double) : {
232 __data.f64 = *(
double*)_value;
233 __sqlvar->sqllen =
sizeof(double);
234 __sqlvar->sqltype = SQL_DOUBLE + 1;
242 __sqlvar->sqldata = (
char*)&__data;
254 tm.tm_year = _value->
year - 1900;
255 tm.tm_mon = _value->
month - 1;
256 tm.tm_mday = _value->
day;
258 isc_encode_sql_date(&tm, &__data.date);
260 __sqlvar->sqldata = (
char*)&__data;
261 __sqlvar->sqllen =
sizeof(ISC_DATE);
262 __sqlvar->sqltype = SQL_TYPE_DATE + 1;
274 tm.tm_hour = _value->
hour;
275 tm.tm_min = _value->
min;
276 tm.tm_sec = _value->
sec;
278 isc_encode_sql_time(&tm, &__data.time);
279 __data.time += _value->
frac / 100000;
281 __sqlvar->sqldata = (
char*)&__data;
282 __sqlvar->sqllen =
sizeof(ISC_TIME);
283 __sqlvar->sqltype = SQL_TYPE_TIME + 1;
284#if defined(FIREBIRD_IBASE_H) && FB_API_VER >= 40
286 __data.time_tz.time_zone = 0;
287 __data.time_tz.ext_offset = _value->
tzoff;
288 __sqlvar->sqllen =
sizeof(ISC_TIME_TZ_EX);
289 __sqlvar->sqltype = SQL_TIME_TZ_EX + 1;
303 tm.tm_year = _value->
year - 1900;
304 tm.tm_mon = _value->
month - 1;
305 tm.tm_mday = _value->
day;
306 tm.tm_hour = _value->
hour;
307 tm.tm_min = _value->
min;
308 tm.tm_sec = _value->
sec;
310 isc_encode_timestamp(&tm, &__data.ts);
311 __data.ts.timestamp_time += _value->
frac / 100000;
313 __sqlvar->sqldata = (
char*)&__data;
314 __sqlvar->sqllen =
sizeof(ISC_TIMESTAMP);
315 __sqlvar->sqltype = SQL_TIMESTAMP + 1;
316#if defined(FIREBIRD_IBASE_H) && FB_API_VER >= 40
318 __data.ts_tz.time_zone = 0;
319 __data.ts_tz.ext_offset = _value->
tzoff;
320 __sqlvar->sqllen =
sizeof(ISC_TIMESTAMP_TZ_EX);
321 __sqlvar->sqltype = SQL_TIMESTAMP_TZ_EX + 1;
327inline size_t __MIN(
size_t x,
size_t y)
329 return x < y ? x : y;
336 isc_blob_handle hBlob =
NULL;
352 while(nTotal < _size) {
353 nBytes =
__MIN(_size - nTotal, USHRT_MAX);
362 isc_close_blob(statusVector, &hBlob);
370 if (isc_close_blob(statusVector, &hBlob)) {
375 __sqlvar->sqldata = (
char*)&__data.blob_id;
376 __sqlvar->sqllen =
sizeof(ISC_QUAD);
377 __sqlvar->sqltype = SQL_BLOB + 1;
385 isc_blob_handle hBlob =
NULL;
399 char* _pbuf = (
char*)malloc(USHRT_MAX);
403 isc_close_blob(statusVector, &hBlob);
411 nBytes =
__MIN(_size - nTotal, USHRT_MAX);
412 if (nBytes && (nBytes = _input->read(_pbuf, nBytes))) {
422 isc_close_blob(statusVector, &hBlob);
439 isc_close_blob(statusVector, &hBlob);
445 if (isc_close_blob(statusVector, &hBlob)) {
450 __sqlvar->sqldata = (
char*)&__data.blob_id;
451 __sqlvar->sqllen =
sizeof(ISC_QUAD);
452 __sqlvar->sqltype = SQL_BLOB + 1;
462 isc_blob_handle hBlob =
NULL;
#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
isc_tr_handle * trHandlePtr()
ISC_STATUS * statusVector()
isc_db_handle * dbHandlePtr()
virtual const wchar_t * serverDataTypeName() const
bool init(SQL::Query *_query, XSQLVAR *_sqlvar)
bool setInputStreamToBlob(_CONST InputStream *_input, size_t _size)
bool setTime(const SQL::Time *_value, size_t _size)
bool setDate(const SQL::Date *_value, size_t _size)
bool setUInteger(const void *_value, size_t _size)
bool setInteger(const void *_value, size_t _size)
bool setTimeStamp(const SQL::TimeStamp *_value, size_t _size)
bool setBytesToBlob(const byte_t *_value, size_t _size)
virtual bool __setData(_CONST void *_value, size_t _size, SQL::DataType _dataType, SQL::DataType _assignType)
bool setFloat(const void *_value, size_t _size)
size_t __MIN(size_t x, size_t y)