97{
98 switch(_dataType) {
100 switch (_size) {
101 case sizeof(int8_t) : {
102 __data.i32 = (int32_t) * (int8_t*)_pv;
103 __sqlvar->sqltype = ECPGt_int;
104 __sqlvar->sqllen = sizeof(int32_t);
105 __sqlvar->sqldata = (char*)&__data;
106 break;
107 }
108 case sizeof(int16_t) : {
109 __data.i32 = (int32_t) * (int16_t*)_pv;
110 __sqlvar->sqltype = ECPGt_int;
111 __sqlvar->sqllen = sizeof(int32_t);
112 __sqlvar->sqldata = (char*)&__data;
113 break;
114 }
115 case sizeof(int32_t) : {
116 __data.i32 = *(int32_t*)_pv;
117 __sqlvar->sqltype = ECPGt_int;
118 __sqlvar->sqllen = sizeof(int32_t);
119 __sqlvar->sqldata = (char*)&__data;
120 break;
121 }
122 case sizeof(int64_t) : {
123 __data.i64 = *(int64_t*)_pv;
124#if ALIGNOF_LONG == 8
125 __sqlvar->sqltype = ECPGt_long;
126#else
127 __sqlvar->sqltype = ECPGt_long_long;
128#endif
129 __sqlvar->sqllen = sizeof(int64_t);
130 __sqlvar->sqldata = (char*)&__data;
131 break;
132 }
133 default: {
135 return false;
136 }
137 }
138 break;
139 }
141 switch (_size) {
142 case sizeof(uint8_t) : {
143 __data.i32 = (int32_t) * (uint8_t*)_pv;
144 __sqlvar->sqltype = ECPGt_int;
145 __sqlvar->sqllen = sizeof(uint32_t);
146 __sqlvar->sqldata = (char*)&__data;
147 break;
148 }
149 case sizeof(uint16_t) : {
150 __data.i32 = (int32_t) * (uint16_t*)_pv;
151 __sqlvar->sqltype = ECPGt_int;
152 __sqlvar->sqllen = sizeof(uint32_t);
153 __sqlvar->sqldata = (char*)&__data;
154 break;
155 }
156 case sizeof(uint32_t) : {
157 __data.i32 = (int32_t) * (uint32_t*)_pv;
158 __sqlvar->sqltype = ECPGt_int;
159 __sqlvar->sqllen = sizeof(uint32_t);
160 __sqlvar->sqldata = (char*)&__data;
161 break;
162 }
163 case sizeof(uint64_t) : {
164 __data.i64 = (int64_t) * (uint64_t*)_pv;
165#if ALIGNOF_LONG == 8
166 __sqlvar->sqltype = ECPGt_long;
167#else
168 __sqlvar->sqltype = ECPGt_long_long;
169#endif
170 __sqlvar->sqllen = sizeof(int64_t);
171 __sqlvar->sqldata = (char*)&__data;
172 break;
173 }
174 default: {
176 return false;
177 }
178 }
179 break;
180 }
182 switch (_size) {
183 case sizeof(float) : {
184 __data.f32 = *(float*)_pv;
185 __sqlvar->sqltype = ECPGt_float;
186 __sqlvar->sqllen = sizeof(float);
187 __sqlvar->sqldata = (char*)&__data;
188 break;
189 }
190 case sizeof(double) : {
191 __data.f64 = *(double*)_pv;
192 __sqlvar->sqltype = ECPGt_double;
193 __sqlvar->sqllen = sizeof(double);
194 __sqlvar->sqldata = (char*)&__data;
195 break;
196 }
197 default: {
199 return false;
200 }
201 }
202 break;
203 }
205 if (_size == sizeof(SQL::Date)) {
206 __encode((
const SQL::Date*)_pv, &__data.dt);
207 __sqlvar->sqltype = ECPGt_date;
208 __sqlvar->sqllen = sizeof(date);
209 __sqlvar->sqldata = (char*)&__data;
210 }
211 else {
213 return false;
214 }
215 break;
216 }
218 if (_size == sizeof(SQL::Time)) {
219 __bytes =
__encode((
const SQL::Time*)_pv);
220 __sqlvar->sqltype = ECPGt_char;
221 __sqlvar->sqllen = (short)__bytes.length();
222 __sqlvar->sqldata = (char*)__bytes.data();
223 }
224 else {
226 return false;
227 }
228 break;
229 }
231 if (_size == sizeof(SQL::TimeStamp)) {
232 const SQL::TimeStamp* p = (const SQL::TimeStamp*)_pv;
233#if 0
236 return false;
237 }
238#endif
240 __sqlvar->sqltype = ECPGt_timestamp;
241 __sqlvar->sqllen = sizeof(timestamp);
242 __sqlvar->sqldata = (char*)&__data;
243 }
244 else {
246 return false;
247 }
248 break;
249 }
253 if (_size == sizeof(SQL::Interval)) {
254 __encode((
const SQL::Interval*)_pv, &__data.ival);
255 __sqlvar->sqltype = ECPGt_interval;
256 __sqlvar->sqllen = sizeof(interval);
257 __sqlvar->sqldata = (char*)&__data;
258 }
259 else {
261 return false;
262 }
263 break;
264 }
267 if (_size > 0) {
268 numeric* p = PGTYPESnumeric_from_asc((
char*)_pv,
NULL);
269 if (!p) {
271 return false;
272 }
273 PGTYPESnumeric_copy(p, &__data.nu);
274 __sqlvar->sqltype = ECPGt_numeric;
275 __sqlvar->sqllen = sizeof(numeric);
276 __sqlvar->sqldata = (char*)&__data;
277 }
278 else {
280 return false;
281 }
282 break;
283 }
284 }
286 switch (_assignType) {
289 __sqlvar->sqltype = ECPGt_char;
290 __sqlvar->sqllen = (short) _size;
291 __sqlvar->sqldata = (char*) _pv;
292 break;
293 }
296 __bytes = ByteString::toHexString(
297 (const char*)_pv, _size, (size_t)-1, true);
300 return false;
301 }
302 __sqlvar->sqltype = ECPGt_char;
303 __sqlvar->sqllen = (short)__bytes.length();
304 __sqlvar->sqldata = (char*)__bytes.data();
305 break;
306 }
307 default: {
309 return false;
310 }
311 }
312 break;
313 }
315 try {
317 }
318 catch (IOException* e) {
321 return false;
322 }
325 return false;
326 }
327 __bytes = ByteString::toHexString(__bytes, (size_t)-1, true);
330 return false;
331 }
332 __sqlvar->sqltype = ECPGt_char;
333 __sqlvar->sqllen = (short) __bytes.length();
334 __sqlvar->sqldata = (char*)__bytes.data();
335 break;
336 }
337 default: {
339 return false;
340 }
341 }
342
343 __indicator = 0;
344 Param::__dataType = _assignType;
345 return true;
346}
#define __SET_ERROR_MSG(_message)
void __encode(const SQL::Date *_s, date *_r)
#define __SET_ERROR(_errorCode)
String toStringAll() const
static ByteString readBytes(InputStream &_input, size_t _n=(size_t) -1) __DCL_THROWS1(IOException *)