367{
368 switch (_sqlType) {
373 break;
376 break;
377 default:
378 ;
379 }
380
382
383
384 if (Param::__dataType != _sqlType) {
386 return false;
387 }
388 return true;
389 }
390
391 switch (_valType) {
394 if (_size <= sizeof(int64_t )) {
395 uword sign = OCI_NUMBER_SIGNED;
397 sign = OCI_NUMBER_UNSIGNED;
398
399 sword status = OCINumberFromInt(
400 conn()->errorHandle(),
401 (CONST dvoid*)_val,
402 _size,
403 sign,
404 &__data.number
405 );
406 if (status != OCI_SUCCESS) {
408 return false;
409 }
410 }
411 #if 0
412
413
414 else if (_size == sizeof(int64_t)) {
415 ByteString str;
418 else
420
421 status = OCINumberFromText(
422 conn()->errorHandle(),
423 (CONST OraText*)str.data(),
424 str.length(),
426 0,
428 0,
429 &__data.num
430 );
431 if (status != OCI_SUCCESS) {
433 return false;
434 }
435 }
436 #endif
437 else {
439 return false;
440 }
445 break;
446 }
448 if (_size <= sizeof(double)) {
449 sword status = OCINumberFromReal(
450 conn()->errorHandle(),
451 (CONST dvoid*)_val,
452 _size,
453 &__data.number
454 );
455 if (status != OCI_SUCCESS) {
457 return false;
458 }
459 }
460 else {
462 return false;
463 }
468 break;
469 }
471 if (_size == sizeof(SQL::Date)) {
472 memset(&__data.date, 0, sizeof(OCIDate));
473 const SQL::Date* p = (const SQL::Date*)_val;
474 OCIDateSetDate(
475 &(__data.date),
479 );
484 }
485 else {
487 return false;
488 }
489 break;
490 }
492
494 return false;
495 }
497 if (_size == sizeof(SQL::TimeStamp)) {
498 if (!
setTimeStamp((
const SQL::TimeStamp*)_val, _size, _sqlType))
499 return false;
500 }
501 else {
503 return false;
504 }
505 break;
506 }
508 if (_size == sizeof(SQL::Interval)) {
509 if (!
setInterval((
const SQL::Interval*)_val, _size, _sqlType))
510 return false;
511 }
512 else {
514 return false;
515 }
516 break;
517 }
520 sword status = OCINumberFromText(
521 conn()->errorHandle(),
522 (CONST OraText*)_val,
523 _size,
525 0,
527 0,
528 &__data.number
529 );
530 if (status != OCI_SUCCESS) {
532 return false;
533 }
538 break;
539 }
540 }
542 switch (_sqlType) {
546 break;
547 }
551 break;
552 }
556 break;
557 }
561 break;
562 }
567 &(__data.desc),
568 OCI_DTYPE_LOB
569 );
570 if (status != OCI_SUCCESS) {
572 return false;
573 }
578 }
579 break;
580 }
581 default: {
583 return false;
584 }
585 }
588 __inputValue = _val;
589 }
590 else {
592 }
594
595 break;
596 }
598 switch (_sqlType) {
602 break;
603 }
607 break;
608 }
612 break;
613 }
617 break;
618 }
623 &(__data.desc),
624 OCI_DTYPE_LOB
625 );
626 if (status != OCI_SUCCESS) {
628 return false;
629 }
634 }
635 break;
636 }
637 default: {
639 return false;
640 }
641 }
644 __inputStream = (InputStream*)_val;
645 break;
646 }
647 default: {
649 return false;
650 }
651 }
652
653 Param::__dataType = _sqlType;
654 __inputIndicator = 0;
655 return true;
656}
#define __SET_ERROR_HANDLE(_SQLCODE)
static ByteString toByteString(int64_t _n, unsigned _base=10)
sword DescriptorAlloc(void **_descpp, ub4 _type, size_t _xtramem_sz=0, void **_usrmempp=NULL)
bool setInterval(const SQL::Interval *_val, size_t _size, SQL::DataType _sqlType)
bool setTimeStamp(const SQL::TimeStamp *_val, size_t _size, SQL::DataType _sqlType)
static ByteString toByteString(uint64_t _u, unsigned _base=10)