Changeset 9d6a77b in tol
- Timestamp:
- Jan 12, 2016, 5:11:27 PM (11 years ago)
- Branches:
- 1941-docker-image-to-test, devel, master
- Children:
- 9b74047
- Parents:
- eb0481b
- File:
-
- 1 edited
-
tol/dbdrivers/libtolodbc.c (modified) (12 diffs)
Legend:
- Unmodified
- Added
- Removed
-
tol/dbdrivers/libtolodbc.c
reb0481b r9d6a77b 426 426 { 427 427 SQLRETURN status; 428 SQL INTEGERrow_count=-1;428 SQLLEN row_count=-1; 429 429 430 430 if(odbc_OpenQuery(dbd, query)) … … 473 473 SQLCHAR szColName [SQLMAXWORD+1]; 474 474 SQLSMALLINT pfSqlType, pibScale, pfNullable; 475 SQLU INTEGER pcbColDef;475 SQLULEN ColumnSize; 476 476 SQLRETURN status; 477 477 int ret = TypeDBUnknown; 478 478 479 479 status = SQLDescribeCol(dbd->hstmt, nfield+1, szColName, SQLMAXWORD, NULL, 480 &pfSqlType, & pcbColDef, &pibScale, &pfNullable);480 &pfSqlType, &ColumnSize, &pibScale, &pfNullable); 481 481 if(!checkSQLRet(status, dbd, __LINE__, GET_DIAG_STMT)) { 482 482 return -1; … … 484 484 485 485 dbd->typeList[nfield] = pfSqlType; 486 // printf( "pfSqlType=%d\n", pfSqlType );486 // printf( "pfSqlType=%d\n", pfSqlType ); 487 487 switch (pfSqlType) 488 488 { … … 524 524 525 525 SQLSMALLINT pfSqlType; 526 SQLU INTEGER pcbColDef;526 SQLULEN ColumnSize; 527 527 SQLSMALLINT pibScale; 528 528 SQLSMALLINT pfNullable; … … 530 530 status = SQLDescribeCol(dbd->hstmt, nfield+1, 531 531 (SQLCHAR*)fieldName, SQLMAXWORD, NULL, 532 &pfSqlType, & pcbColDef,532 &pfSqlType, &ColumnSize, 533 533 &pibScale, &pfNullable); 534 534 … … 596 596 // variables for SQLGetData function 597 597 SQLPOINTER pointer; 598 SQL INTEGERpcbValue;598 SQLLEN pcbValue; 599 599 int size; 600 600 char szErrMsg[256]; … … 690 690 { 691 691 SQLRETURN status; 692 SQLINTEGER num_available=0, num_required=MAX_TEXT_FIELD_LENGTH; 692 SQLINTEGER num_required=MAX_TEXT_FIELD_LENGTH; 693 SQLLEN num_available=0; 693 694 UCHAR *str, *long_str; 694 695 … … 743 744 744 745 SQLPOINTER pointer; 745 SQL INTEGERpcbValue;746 SQLLEN pcbValue; 746 747 int size; 747 748 char *errmsg; … … 773 774 case SQL_TYPE_TIMESTAMP: 774 775 #endif 776 // printf( "preparing to extract SQL_TYPE_TIMESTAMP\n" ); 775 777 size = sizeof(struct tagTIMESTAMP_STRUCT); 776 778 x_timestamp = (struct tagTIMESTAMP_STRUCT *)malloc(size); … … 794 796 return 0; 795 797 } 796 797 798 /* pcbValue must be the length of the data available to return. 798 799 * But also can be: … … 827 828 case SQL_TYPE_TIMESTAMP: 828 829 #endif 830 #ifdef __DUMP_TIMESTAMP__ 831 printf( "year = %hd\n", x_timestamp->year ); 832 printf( "month = %hd\n", x_timestamp->month ); 833 printf( "day = %hd\n", x_timestamp->day ); 834 printf( "hour = %hd\n", x_timestamp->hour ); 835 printf( "minute = %hd\n", x_timestamp->minute ); 836 printf( "second = %hd\n", x_timestamp->second ); 837 printf( "fraction = %d\n", x_timestamp->fraction ); 838 #endif 829 839 (*dateval)->year = (unsigned short)(x_timestamp->year); 830 840 (*dateval)->month = (unsigned short)(x_timestamp->month); … … 833 843 (*dateval)->minute = (unsigned short)(x_timestamp->minute); 834 844 (*dateval)->second = (unsigned short)(x_timestamp->second); 835 (*dateval)->msecond = (unsigned short)(x_timestamp->fraction); 845 // The fraction of a second, in billionths of a second. Possible values are 0 to 999,999,999. 846 //(*dateval)->msecond = (unsigned short)(x_timestamp->fraction); 847 if ( x_timestamp->fraction > 999999999 ) 848 { 849 (*dateval)->msecond = 999; 850 } 851 else 852 { 853 (*dateval)->msecond = (unsigned short)(x_timestamp->fraction/1000000.0); 854 } 855 #ifdef __DUMP_TIMESTAMP__ 856 printf( "(*dateval)->msecond = %d\n", (*dateval)->msecond ); 857 #endif 836 858 } 837 859
Note: See TracChangeset
for help on using the changeset viewer.
