9 #define SOCI_DB2_SOURCE 24 throw soci_error(
"Vectors of size 0 are not allowed.");
46 std::vector<short> *vp =
static_cast<std::vector<short> *
>(data);
47 std::vector<short> &v(*vp);
48 prepare_indicators(v.size());
55 size =
sizeof(SQLINTEGER);
56 std::vector<SQLINTEGER> *vp =
static_cast<std::vector<SQLINTEGER> *
>(data);
57 std::vector<SQLINTEGER> &v(*vp);
58 prepare_indicators(v.size());
64 cType = SQL_C_SBIGINT;
65 size =
sizeof(
long long);
66 std::vector<long long> *vp
67 =
static_cast<std::vector<long long> *
>(data);
68 std::vector<long long> &v(*vp);
69 prepare_indicators(v.size());
75 cType = SQL_C_UBIGINT;
76 size =
sizeof(
unsigned long long);
77 std::vector<unsigned long long> *vp
78 =
static_cast<std::vector<unsigned long long> *
>(data);
79 std::vector<unsigned long long> &v(*vp);
80 prepare_indicators(v.size());
87 size =
sizeof(double);
88 std::vector<double> *vp =
static_cast<std::vector<double> *
>(data);
89 std::vector<double> &v(*vp);
90 prepare_indicators(v.size());
102 =
static_cast<std::vector<char> *
>(data);
104 prepare_indicators(v->size());
106 size =
sizeof(char) * 2;
107 std::size_t bufSize = size * v->size();
111 buf =
new char[bufSize];
118 std::vector<std::string> *v
119 =
static_cast<std::vector<std::string> *
>(data);
120 colSize = statement_.column_size(position) + 1;
121 std::size_t bufSize = colSize * v->size();
122 buf =
new char[bufSize];
124 prepare_indicators(v->size());
126 size =
static_cast<SQLINTEGER
>(colSize);
132 cType = SQL_C_TYPE_TIMESTAMP;
133 std::vector<std::tm> *v
134 =
static_cast<std::vector<std::tm> *
>(data);
136 prepare_indicators(v->size());
138 size =
sizeof(TIMESTAMP_STRUCT);
141 std::size_t bufSize = size * v->size();
143 buf =
new char[bufSize];
153 SQLRETURN cliRC = SQLBindCol(statement_.hStmt, static_cast<SQLUSMALLINT>(position++),
154 cType, data, size, indptr);
155 if (cliRC != SQL_SUCCESS)
157 throw db2_soci_error(
"Error while pre-fetching into vector",cliRC);
175 std::vector<char> *vp
176 =
static_cast<std::vector<char> *
>(data);
178 std::vector<char> &v(*vp);
180 std::size_t
const vsize = v.size();
181 for (std::size_t i = 0; i != vsize; ++i)
189 std::vector<std::string> *vp
190 =
static_cast<std::vector<std::string> *
>(data);
192 std::vector<std::string> &v(*vp);
195 std::size_t
const vsize = v.size();
196 for (std::size_t i = 0; i != vsize; ++i)
198 v[i].assign(pos, strlen(pos));
204 std::vector<std::tm> *vp
205 =
static_cast<std::vector<std::tm> *
>(data);
207 std::vector<std::tm> &v(*vp);
209 std::size_t
const vsize = v.size();
210 for (std::size_t i = 0; i != vsize; ++i)
214 TIMESTAMP_STRUCT * ts =
reinterpret_cast<TIMESTAMP_STRUCT*
>(pos);
216 t.tm_year = ts->year - 1900;
217 t.tm_mon = ts->month - 1;
219 t.tm_hour = ts->hour;
220 t.tm_min = ts->minute;
221 t.tm_sec = ts->second;
233 std::size_t
const indSize = statement_.get_number_of_rows();
234 for (std::size_t i = 0; i != indSize; ++i)
240 else if (indVec[i] == SQL_NULL_DATA)
252 std::size_t
const indSize = statement_.get_number_of_rows();
253 for (std::size_t i = 0; i != indSize; ++i)
255 if (indVec[i] == SQL_NULL_DATA)
259 "Null value fetched and no indicator defined.");
278 std::vector<char> *v =
static_cast<std::vector<char> *
>(data);
284 std::vector<short> *v =
static_cast<std::vector<short> *
>(data);
290 std::vector<SQLINTEGER> *v =
static_cast<std::vector<SQLINTEGER> *
>(data);
296 std::vector<long long> *v
297 =
static_cast<std::vector<long long> *
>(data);
303 std::vector<unsigned long long> *v
304 =
static_cast<std::vector<unsigned long long> *
>(data);
310 std::vector<double> *v
311 =
static_cast<std::vector<double> *
>(data);
317 std::vector<std::string> *v
318 =
static_cast<std::vector<std::string> *
>(data);
324 std::vector<std::tm> *v
325 =
static_cast<std::vector<std::tm> *
>(data);
344 std::vector<char> *v =
static_cast<std::vector<char> *
>(data);
350 std::vector<short> *v =
static_cast<std::vector<short> *
>(data);
356 std::vector<SQLINTEGER> *v =
static_cast<std::vector<SQLINTEGER> *
>(data);
362 std::vector<long long> *v
363 =
static_cast<std::vector<long long> *
>(data);
369 std::vector<unsigned long long> *v
370 =
static_cast<std::vector<unsigned long long> *
>(data);
376 std::vector<double> *v
377 =
static_cast<std::vector<double> *
>(data);
383 std::vector<std::string> *v
384 =
static_cast<std::vector<std::string> *
>(data);
390 std::vector<std::tm> *v
391 =
static_cast<std::vector<std::tm> *
>(data);
void resize(std::size_t sz)
void post_fetch(bool gotData, indicator *ind)
void prepare_indicators(std::size_t size)
void define_by_pos(int &position, void *data, details::exchange_type type)