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->
month = (uint8_t)mdy[0];
411 p->
day = (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 }
434 (const intrvl_t*)(__sqlvar->sqldata),
435 (SQL::Interval*)_pv
436 );
437 break;
438 }
443 if (*_size < __dataSize) {
445 return false;
446 }
447 char* ps = (char*)_pv;
448 if (dectoasc(
449 (dec_t*)(__sqlvar->sqldata),
450 ps,
451 *_size,
452 -1
453 )) {
454
455
457 }
459 for (;
len < *_size;
len++) {
461 break;
462 }
466 }
467 break;
468 }
469 }
471 switch (__sqlvar->sqltype & SQLTYPE) {
472 case SQLLVARCHAR: {
473#if __USE_IFX_VAR
474 int nLen = ifx_var_getlen((void**)(__sqlvar->sqldata));
475 if (nLen < 0) {
477 return false;
478 }
479
480 void* pSrc = ifx_var_getdata((void**)(__sqlvar->sqldata));
481 if (nLen > 0 && *_size > 0 && pSrc !=
NULL) {
482 size_t nCopy = *_size;
483 if ((size_t)nLen < nCopy)
484 nCopy = (size_t)nLen;
485
486 memcpy(_pv, pSrc, nCopy);
487 if (nCopy < *_size) {
488 *((char*)_pv + nCopy) = '\0';
489 *_size = nCopy;
490 }
491 }
492 else {
493 *_size = 0;
494 }
495 break;
496#endif
497 }
498 case SQLCHAR:
499 case SQLNCHAR:
500 case SQLVCHAR:
501 case SQLNVCHAR: {
502 if (__sqlvar->sqllen > 0 && *_size > 0) {
503 size_t nCopy = *_size;
504 if ((size_t)(__sqlvar->sqllen) < nCopy)
505 nCopy = (size_t)(__sqlvar->sqllen);
506
507 memcpy(_pv, __sqlvar->sqldata, nCopy);
508
509 if (nCopy < *_size) {
510 *((char*)_pv + nCopy) = '\0';
511 *_size = nCopy;
512 }
513 }
514 else
515 *_size = 0;
516 break;
517 }
518 case SQLTEXT:
519 case SQLBYTES: {
520 if (((loc_t*)(__sqlvar->sqldata))->loc_size > 0
521 && *_size > 0) {
522 loc_t* loc = (loc_t*)(__sqlvar->sqldata);
523 size_t nCopy = *_size;
524 if ((size_t)(loc->loc_size) < nCopy)
525 nCopy = (size_t)(loc->loc_size);
526
527 memcpy(_pv, loc->loc_buffer, nCopy);
528 if (nCopy < *_size) {
529 *((char*)_pv + nCopy) = '\0';
530 *_size = nCopy;
531 }
532 }
533 else {
534 *_size = 0;
535 }
536 break;
537 }
538 default: {
540 }
541 }
542 break;
543 }
545 switch (__sqlvar->sqltype & SQLTYPE) {
546 case SQLCHAR:
547 case SQLNCHAR:
548 case SQLVCHAR:
549 case SQLNVCHAR: {
550 if (__sqlvar->sqllen > 0 && *_size > 0) {
551 if ((size_t)(__sqlvar->sqllen) < *_size)
552 *_size = (size_t)(__sqlvar->sqllen);
553
554 try {
555 ((OutputStream*)_pv)->write(
556 __sqlvar->sqldata, *_size);
557 }
558 catch (IOException* e) {
561 return false;
562 }
563 }
564 else {
565 *_size = 0;
566 }
567 break;
568 }
569 case SQLLVARCHAR: {
570 int nLen = ifx_var_getlen((void**)(__sqlvar->sqldata));
571 if (nLen < 0) {
573 return false;
574 }
575
576 void* pSrc = ifx_var_getdata((void**)(__sqlvar->sqldata));
577 if (nLen > 0 && *_size > 0 && pSrc !=
NULL) {
578 if ((size_t)nLen < *_size)
579 *_size = (size_t)nLen;
580
581 try {
582 ((OutputStream*)_pv)->write(
583 pSrc, *_size);
584 }
585 catch (IOException* e) {
588 return false;
589 }
590 }
591 else {
592 *_size = 0;
593 }
594 break;
595 }
596 case SQLTEXT:
597 case SQLBYTES: {
598 if (((loc_t*)(__sqlvar->sqldata))->loc_size > 0) {
599 loc_t* loc = (loc_t*)(__sqlvar->sqldata);
600
601 if ((size_t)(loc->loc_size) < *_size)
602 *_size = (size_t)(loc->loc_size);
603
604 if (*_size) {
605 try {
606 ((OutputStream*)_pv)->write(
607 loc->loc_buffer, *_size);
608 }
609 catch (IOException* e) {
612 return false;
613 }
614 }
615 }
616 else {
617 *_size = 0;
618 }
619 break;
620 }
621 default: {
623 }
624 }
625 break;
626 }
627 default: {
629 }
630 }
631 return true;
632}
#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)