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;
133 __sqlvar->sqldata = (
char*)_pv;
134 __sqlvar->sqllen = _size;
135 __sqlvar->sqltype = SQL_TEXT + 1;
161 Param::__dataType = _dataType;
170 case sizeof(int16_t): {
171 __data.i16 = *(int16_t*)_pv;
172 __sqlvar->sqllen =
sizeof(int16_t);
173 __sqlvar->sqltype = SQL_SHORT + 1;
176 case sizeof(int32_t): {
177 __data.i32 = *(int32_t*)_pv;
178 __sqlvar->sqllen =
sizeof(int32_t);
179 __sqlvar->sqltype = SQL_LONG + 1;
182 case sizeof(int64_t): {
183 __data.i64 = *(int64_t*)_pv;
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*)_pv;
202 __sqlvar->sqllen =
sizeof(int16_t);
203 __sqlvar->sqltype = SQL_SHORT + 1;
206 case sizeof(uint32_t): {
207 __data.i32 = (int32_t) * (uint32_t*)_pv;
208 __sqlvar->sqllen =
sizeof(int32_t);
209 __sqlvar->sqltype = SQL_LONG + 1;
212 case sizeof(uint64_t) : {
213 __data.i64 = (int64_t) * (uint64_t*)_pv;
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*)_pv;
232 __sqlvar->sqllen =
sizeof(float);
233 __sqlvar->sqltype = SQL_FLOAT + 1;
236 case sizeof(double) : {
237 __data.f64 = *(
double*)_pv;
238 __sqlvar->sqllen =
sizeof(double);
239 __sqlvar->sqltype = SQL_DOUBLE + 1;
247 __sqlvar->sqldata = (
char*)&__data;
259 tm.tm_year = p->
nYear - 1900;
260 tm.tm_mon = p->
nMonth - 1;
261 tm.tm_mday = p->
nDay;
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 = p->
nHour;
283 isc_encode_sql_time(&tm, &__data.time);
284 __data.time += p->
nFrac / 100000;
286 __sqlvar->sqldata = (
char*)&__data;
287 __sqlvar->sqllen =
sizeof(ISC_TIME);
288 __sqlvar->sqltype = SQL_TYPE_TIME + 1;
300 tm.tm_year = p->
nYear - 1900;
301 tm.tm_mon = p->
nMonth - 1;
302 tm.tm_mday = p->
nDay;
303 tm.tm_hour = p->
nHour;
307 isc_encode_timestamp(&tm, &__data.ts);
308 __data.ts.timestamp_time += p->
nFrac / 100000;
310 __sqlvar->sqldata = (
char*)&__data;
311 __sqlvar->sqllen =
sizeof(ISC_TIMESTAMP);
312 __sqlvar->sqltype = SQL_TIMESTAMP + 1;
316inline size_t __MIN(
size_t x,
size_t y)
318 return x < y ? x : y;
325 isc_blob_handle hBlob =
NULL;
341 while(nTotal < _size) {
342 nBytes =
__MIN(_size - nTotal, USHRT_MAX);
351 isc_close_blob(statusVector, &hBlob);
359 if (isc_close_blob(statusVector, &hBlob)) {
364 __sqlvar->sqldata = (
char*)&__data.blob_id;
365 __sqlvar->sqllen =
sizeof(ISC_QUAD);
366 __sqlvar->sqltype = SQL_BLOB + 1;
375 isc_blob_handle hBlob =
NULL;
389 char* _pbuf = (
char*)malloc(USHRT_MAX);
393 isc_close_blob(statusVector, &hBlob);
401 nBytes =
__MIN(_size - nTotal, USHRT_MAX);
402 if (nBytes && (nBytes = pInput->read(_pbuf, nBytes))) {
412 isc_close_blob(statusVector, &hBlob);
429 isc_close_blob(statusVector, &hBlob);
435 if (isc_close_blob(statusVector, &hBlob)) {
440 __sqlvar->sqldata = (
char*)&__data.blob_id;
441 __sqlvar->sqllen =
sizeof(ISC_QUAD);
442 __sqlvar->sqltype = SQL_BLOB + 1;
452 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()
bool setBytesToBlob(const byte_t *p, size_t _size)
virtual const wchar_t * serverDataTypeName() const
bool setTimeStamp(const SQL::TimeStamp *p, size_t _size)
bool init(SQL::Query *_query, XSQLVAR *_sqlvar)
bool setFloat(const void *_pv, size_t _size)
bool setUInteger(const void *_pv, size_t _size)
bool setDate(const SQL::Date *p, size_t _size)
bool setTime(const SQL::Time *p, size_t _size)
bool setInputStreamToBlob(_CONST InputStream *pInput, size_t _size)
bool setInteger(const void *_pv, size_t _size)
virtual bool __setData(_CONST void *_pv, size_t _size, SQL::DataType _dataType, SQL::DataType _assignType)
size_t __MIN(size_t x, size_t y)