389{
392 return false;
393 }
394
395 switch(_dataType) {
398 }
401 }
404 }
407 short mdy[3];
408 __DCL_VERIFY(rjulmdy(*(
long*)(__sqlvar->sqldata), mdy) == 0);
409 SQL::Date* p = (SQL::Date*)_pv;
410 p->
nMonth = (uint8_t)mdy[0];
411 p->
nDay = (uint8_t)mdy[1];
413 break;
414 }
418 (const dtime_t*)(__sqlvar->sqldata),
419 (SQL::Time*)_pv
420 );
421 break;
422 }
426 (const dtime_t*)(__sqlvar->sqldata),
427 (SQL::TimeStamp*)_pv
428 );
429 break;
430 }
436 (const intrvl_t*)(__sqlvar->sqldata),
437 (SQL::Interval*)_pv
438 );
439 break;
440 }
445
446 if (*_size < __dataSize) {
448 return false;
449 }
450 else {
451 char* ps = (char*)_pv;
452 if (dectoasc(
453 (dec_t*)(__sqlvar->sqldata),
454 ps,
455 *_size,
456 -1
457 )) {
458
459
461 }
462
463 size_t uLen = 0;
464 for (; uLen < *_size; uLen++) {
465 if (ps[uLen] == ' ')
466 break;
467 }
468
469 if (uLen < *_size) {
470 *_size = uLen;
471 ps[uLen] = '\0';
472 }
473 }
474 break;
475 }
476 }
480 switch (__sqlvar->sqltype & SQLTYPE) {
481 case SQLLVARCHAR: {
482#if __USE_IFX_VAR
483 int nLen = ifx_var_getlen((void**)(__sqlvar->sqldata));
484 if (nLen < 0) {
486 return false;
487 }
488
489 void* pSrc = ifx_var_getdata((void**)(__sqlvar->sqldata));
490 if (nLen > 0 && *_size > 0 && pSrc !=
NULL) {
491 size_t nCopy = *_size;
492 if ((size_t)nLen < nCopy)
493 nCopy = (size_t)nLen;
494
495 memcpy(_pv, pSrc, nCopy);
496 if (nCopy < *_size) {
497 *((char*)_pv + nCopy) = '\0';
498 *_size = nCopy;
499 }
500 }
501 else {
502 *_size = 0;
503 }
504 break;
505#endif
506 }
507 case SQLCHAR:
508 case SQLNCHAR:
509 case SQLVCHAR:
510 case SQLNVCHAR: {
511 if (__sqlvar->sqllen > 0 && *_size > 0) {
512 size_t nCopy = *_size;
513 if ((size_t)(__sqlvar->sqllen) < nCopy)
514 nCopy = (size_t)(__sqlvar->sqllen);
515
516 memcpy(_pv, __sqlvar->sqldata, nCopy);
517
518 if (nCopy < *_size) {
519 *((char*)_pv + nCopy) = '\0';
520 *_size = nCopy;
521 }
522 }
523 else
524 *_size = 0;
525 break;
526 }
527 case SQLTEXT:
528 case SQLBYTES: {
529 if (((loc_t*)(__sqlvar->sqldata))->loc_size > 0
530 && *_size > 0) {
531 loc_t* loc = (loc_t*)(__sqlvar->sqldata);
532 size_t nCopy = *_size;
533 if ((size_t)(loc->loc_size) < nCopy)
534 nCopy = (size_t)(loc->loc_size);
535
536 memcpy(_pv, loc->loc_buffer, nCopy);
537 if (nCopy < *_size) {
538 *((char*)_pv + nCopy) = '\0';
539 *_size = nCopy;
540 }
541 }
542 else {
543 *_size = 0;
544 }
545 break;
546 }
547 default: {
549 }
550 }
551 break;
552 }
554 switch (__sqlvar->sqltype & SQLTYPE) {
555 case SQLCHAR:
556 case SQLNCHAR:
557 case SQLVCHAR:
558 case SQLNVCHAR: {
559 if (__sqlvar->sqllen > 0 && *_size > 0) {
560 if ((size_t)(__sqlvar->sqllen) < *_size)
561 *_size = (size_t)(__sqlvar->sqllen);
562
563 try {
564 ((OutputStream*)_pv)->write(
565 __sqlvar->sqldata, *_size);
566 }
567 catch (IOException* e) {
570 return false;
571 }
572 }
573 else {
574 *_size = 0;
575 }
576 break;
577 }
578 case SQLLVARCHAR: {
579 int nLen = ifx_var_getlen((void**)(__sqlvar->sqldata));
580 if (nLen < 0) {
582 return false;
583 }
584
585 void* pSrc = ifx_var_getdata((void**)(__sqlvar->sqldata));
586 if (nLen > 0 && *_size > 0 && pSrc !=
NULL) {
587 if ((size_t)nLen < *_size)
588 *_size = (size_t)nLen;
589
590 try {
591 ((OutputStream*)_pv)->write(
592 pSrc, *_size);
593 }
594 catch (IOException* e) {
597 return false;
598 }
599 }
600 else {
601 *_size = 0;
602 }
603 break;
604 }
605 case SQLTEXT:
606 case SQLBYTES: {
607 if (((loc_t*)(__sqlvar->sqldata))->loc_size > 0) {
608 loc_t* loc = (loc_t*)(__sqlvar->sqldata);
609
610 if ((size_t)(loc->loc_size) < *_size)
611 *_size = (size_t)(loc->loc_size);
612
613 if (*_size) {
614 try {
615 ((OutputStream*)_pv)->write(
616 loc->loc_buffer, *_size);
617 }
618 catch (IOException* e) {
621 return false;
622 }
623 }
624 }
625 else {
626 *_size = 0;
627 }
628 break;
629 }
630 default: {
632 }
633 }
634 break;
635 }
636 default: {
638 }
639 }
640 return true;
641}
#define __SET_ERROR_SQLCODE(SQLCODE)
#define __SET_ERROR_MSG(_message)
void __decode_dtime(const dtime_t *_s, SQL::TimeStamp *_r)
void __decode_intrvl(const intrvl_t *_s, SQL::Interval *_r)
#define __DCL_VERIFY(expr)
#define __DCL_ASSERT(expr)
#define __SET_ERROR(_errorCode)
String toStringAll() const
bool getFloat(void *_pv, size_t *_size)
bool getUInteger(void *_pv, size_t *_size)
bool getInteger(void *_pv, size_t *_size)