sqltypes.h

00001 //-----------------------------------------------------------------------------
00002 
00003 // File:                        sqltypes.h
00004 
00005 //
00006 
00007 // Copyright:           Copyright (c) Microsoft Corporation          
00008 
00009 //
00010 
00011 // Contents:            This file defines the types used in ODBC
00012 
00013 //
00014 
00015 // Comments:            
00016 
00017 //
00018 
00019 //-----------------------------------------------------------------------------
00020 
00021 
00022 
00023 #ifndef __SQLTYPES
00024 
00025 #define __SQLTYPES
00026 
00027 
00028 
00029 /* if ODBCVER is not defined, assume version 3.51 */
00030 
00031 #ifndef ODBCVER
00032 
00033 #define ODBCVER 0x0351
00034 
00035 #endif  /* ODBCVER */
00036 
00037 
00038 
00039 #ifdef __cplusplus
00040 
00041 extern "C" {                    /* Assume C declarations for C++   */
00042 
00043 #endif  /* __cplusplus */
00044 
00045 
00046 
00047 /* environment specific definitions */
00048 
00049 #ifndef EXPORT
00050 
00051 #define EXPORT   
00052 
00053 #endif
00054 
00055 
00056 
00057 #ifdef WIN32
00058 
00059 #define SQL_API  __stdcall
00060 
00061 #else
00062 
00063 #define SQL_API
00064 
00065 #endif
00066 
00067 
00068 
00069 #ifndef RC_INVOKED
00070 
00071 
00072 
00073 /* API declaration data types */
00074 
00075 typedef unsigned char   SQLCHAR;
00076 
00077 #if (ODBCVER >= 0x0300)
00078 
00079 typedef signed char     SQLSCHAR;
00080 
00081 typedef unsigned char   SQLDATE;
00082 
00083 typedef unsigned char   SQLDECIMAL;
00084 
00085 typedef double          SQLDOUBLE;
00086 
00087 typedef double          SQLFLOAT;
00088 
00089 #endif
00090 
00091 typedef long            SQLINTEGER;
00092 
00093 typedef unsigned long   SQLUINTEGER;
00094 
00095 
00096 
00097 #ifdef _WIN64
00098 
00099 typedef INT64           SQLLEN;
00100 
00101 typedef UINT64          SQLULEN;
00102 
00103 typedef UINT64          SQLSETPOSIROW;
00104 
00105 #else
00106 
00107 #define SQLLEN          SQLINTEGER
00108 
00109 #define SQLULEN         SQLUINTEGER
00110 
00111 #define SQLSETPOSIROW   SQLUSMALLINT
00112 
00113 #endif
00114 
00115 
00116 
00117 //For Backward compatibility
00118 
00119 #ifdef WIN32
00120 
00121 typedef SQLULEN                 SQLROWCOUNT;
00122 
00123 typedef SQLULEN                 SQLROWSETSIZE;
00124 
00125 typedef SQLULEN                 SQLTRANSID;
00126 
00127 typedef SQLLEN                  SQLROWOFFSET;
00128 
00129 #endif
00130 
00131 
00132 
00133 #if (ODBCVER >= 0x0300)
00134 
00135 typedef unsigned char   SQLNUMERIC;
00136 
00137 #endif
00138 
00139 typedef void *          SQLPOINTER;
00140 
00141 #if (ODBCVER >= 0x0300)
00142 
00143 typedef float           SQLREAL;
00144 
00145 #endif
00146 
00147 typedef short           SQLSMALLINT;
00148 
00149 typedef unsigned short  SQLUSMALLINT;
00150 
00151 #if (ODBCVER >= 0x0300)
00152 
00153 typedef unsigned char   SQLTIME;
00154 
00155 typedef unsigned char   SQLTIMESTAMP;
00156 
00157 typedef unsigned char   SQLVARCHAR;
00158 
00159 #endif
00160 
00161 
00162 
00163 /* function return type */
00164 
00165 typedef SQLSMALLINT     SQLRETURN;
00166 
00167 
00168 
00169 /* generic data structures */
00170 
00171 #if (ODBCVER >= 0x0300)
00172 
00173 #if defined(WIN32) || defined(_WIN64)
00174 
00175 typedef void*                                   SQLHANDLE;
00176 
00177 #else
00178 
00179 typedef SQLINTEGER              SQLHANDLE;
00180 
00181 #endif  /* defined(WIN32) || defined(_WIN64) */
00182 
00183 typedef SQLHANDLE               SQLHENV;
00184 
00185 typedef SQLHANDLE               SQLHDBC;
00186 
00187 typedef SQLHANDLE               SQLHSTMT;
00188 
00189 typedef SQLHANDLE               SQLHDESC;
00190 
00191 #else //ODBCVER < 0x0300
00192 
00193 #if defined(WIN32) || defined(_WIN64)
00194 
00195 typedef void*                                   SQLHENV;
00196 
00197 typedef void*                                   SQLHDBC;
00198 
00199 typedef void*                                   SQLHSTMT;
00200 
00201 #else
00202 
00203 typedef SQLINTEGER              SQLHENV;
00204 
00205 typedef SQLINTEGER              SQLHDBC;
00206 
00207 typedef SQLINTEGER              SQLHSTMT;
00208 
00209 #endif  /* defined(WIN32) || defined(_WIN64) */
00210 
00211 #endif /* ODBCVER >= 0x0300 */
00212 
00213 
00214 
00215 /* SQL portable types for C */
00216 
00217 typedef unsigned char           UCHAR;
00218 
00219 typedef signed char             SCHAR;
00220 
00221 typedef SCHAR                   SQLSCHAR;
00222 
00223 typedef long int                SDWORD;
00224 
00225 typedef short int               SWORD;
00226 
00227 typedef unsigned long int       UDWORD;
00228 
00229 typedef unsigned short int      UWORD;
00230 
00231 #ifndef _WIN64
00232 
00233 typedef UDWORD                  SQLUINTEGER;
00234 
00235 #endif
00236 
00237 
00238 
00239 typedef signed long             SLONG;
00240 
00241 typedef signed short            SSHORT;
00242 
00243 typedef unsigned long           ULONG;
00244 
00245 typedef unsigned short          USHORT;
00246 
00247 typedef double                  SDOUBLE;
00248 
00249 typedef double                          LDOUBLE; 
00250 
00251 typedef float                   SFLOAT;
00252 
00253 
00254 
00255 typedef void*                           PTR;
00256 
00257 
00258 
00259 typedef void*                           HENV;
00260 
00261 typedef void*                           HDBC;
00262 
00263 typedef void*                           HSTMT;
00264 
00265 
00266 
00267 typedef signed short            RETCODE;
00268 
00269 
00270 
00271 #if defined(WIN32) || defined(OS2)
00272 
00273 typedef HWND                    SQLHWND;
00274 
00275 #elif defined (UNIX)
00276 
00277 typedef Widget                  SQLHWND;
00278 
00279 #else
00280 
00281 /* placehold for future O/S GUI window handle definition */
00282 
00283 typedef SQLPOINTER              SQLHWND;
00284 
00285 #endif
00286 
00287 
00288 
00289 #ifndef __SQLDATE
00290 
00291 #define __SQLDATE
00292 
00293 /* transfer types for DATE, TIME, TIMESTAMP */
00294 
00295 typedef struct tagDATE_STRUCT
00296 
00297 {
00298 
00299         SQLSMALLINT    year;
00300 
00301         SQLUSMALLINT   month;
00302 
00303         SQLUSMALLINT   day;
00304 
00305 } DATE_STRUCT;
00306 
00307 
00308 
00309 #if (ODBCVER >= 0x0300)
00310 
00311 typedef DATE_STRUCT     SQL_DATE_STRUCT;
00312 
00313 #endif  /* ODBCVER >= 0x0300 */
00314 
00315 
00316 
00317 typedef struct tagTIME_STRUCT
00318 
00319 {
00320 
00321         SQLUSMALLINT   hour;
00322 
00323         SQLUSMALLINT   minute;
00324 
00325         SQLUSMALLINT   second;
00326 
00327 } TIME_STRUCT;
00328 
00329 
00330 
00331 #if (ODBCVER >= 0x0300)
00332 
00333 typedef TIME_STRUCT     SQL_TIME_STRUCT;
00334 
00335 #endif /* ODBCVER >= 0x0300 */
00336 
00337 
00338 
00339 typedef struct tagTIMESTAMP_STRUCT
00340 
00341 {
00342 
00343         SQLSMALLINT    year;
00344 
00345         SQLUSMALLINT   month;
00346 
00347         SQLUSMALLINT   day;
00348 
00349         SQLUSMALLINT   hour;
00350 
00351         SQLUSMALLINT   minute;
00352 
00353         SQLUSMALLINT   second;
00354 
00355         SQLUINTEGER    fraction;
00356 
00357 } TIMESTAMP_STRUCT;
00358 
00359 
00360 
00361 #if (ODBCVER >= 0x0300)
00362 
00363 typedef TIMESTAMP_STRUCT        SQL_TIMESTAMP_STRUCT;
00364 
00365 #endif  /* ODBCVER >= 0x0300 */
00366 
00367 
00368 
00369 
00370 
00371 /*
00372 
00373  * enumerations for DATETIME_INTERVAL_SUBCODE values for interval data types
00374 
00375  * these values are from SQL-92
00376 
00377  */
00378 
00379 
00380 
00381 #if (ODBCVER >= 0x0300)
00382 
00383 typedef enum 
00384 
00385 {
00386 
00387         SQL_IS_YEAR                                             = 1,
00388 
00389         SQL_IS_MONTH                                    = 2,
00390 
00391         SQL_IS_DAY                                              = 3,
00392 
00393         SQL_IS_HOUR                                             = 4,
00394 
00395         SQL_IS_MINUTE                                   = 5,
00396 
00397         SQL_IS_SECOND                                   = 6,
00398 
00399         SQL_IS_YEAR_TO_MONTH                    = 7,
00400 
00401         SQL_IS_DAY_TO_HOUR                              = 8,
00402 
00403         SQL_IS_DAY_TO_MINUTE                    = 9,
00404 
00405         SQL_IS_DAY_TO_SECOND                    = 10,
00406 
00407         SQL_IS_HOUR_TO_MINUTE                   = 11,
00408 
00409         SQL_IS_HOUR_TO_SECOND                   = 12,
00410 
00411         SQL_IS_MINUTE_TO_SECOND                 = 13
00412 
00413 } SQLINTERVAL;
00414 
00415 
00416 
00417 #endif  /* ODBCVER >= 0x0300 */
00418 
00419 
00420 
00421 #if (ODBCVER >= 0x0300)
00422 
00423 typedef struct tagSQL_YEAR_MONTH
00424 
00425 {
00426 
00427                 SQLUINTEGER             year;
00428 
00429                 SQLUINTEGER             month;
00430 
00431 } SQL_YEAR_MONTH_STRUCT;
00432 
00433 
00434 
00435 typedef struct tagSQL_DAY_SECOND
00436 
00437 {
00438 
00439                 SQLUINTEGER             day;
00440 
00441                 SQLUINTEGER             hour;
00442 
00443                 SQLUINTEGER             minute;
00444 
00445                 SQLUINTEGER             second;
00446 
00447                 SQLUINTEGER             fraction;
00448 
00449 } SQL_DAY_SECOND_STRUCT;
00450 
00451 
00452 
00453 typedef struct tagSQL_INTERVAL_STRUCT
00454 
00455 {
00456 
00457         SQLINTERVAL             interval_type;
00458 
00459         SQLSMALLINT             interval_sign;
00460 
00461         union {
00462 
00463                 SQL_YEAR_MONTH_STRUCT           year_month;
00464 
00465                 SQL_DAY_SECOND_STRUCT           day_second;
00466 
00467         } intval;
00468 
00469 
00470 
00471 } SQL_INTERVAL_STRUCT;
00472 
00473 
00474 
00475 #endif  /* ODBCVER >= 0x0300 */
00476 
00477 
00478 
00479 #endif  /* __SQLDATE    */
00480 
00481 
00482 
00483 /* the ODBC C types for SQL_C_SBIGINT and SQL_C_UBIGINT */
00484 
00485 #if (ODBCVER >= 0x0300)
00486 
00487 #if (_MSC_VER >= 900)
00488 
00489 #define ODBCINT64       __int64
00490 
00491 #endif  
00492 
00493 
00494 
00495 /* If using other compilers, define ODBCINT64 to the 
00496 
00497         approriate 64 bit integer type */
00498 
00499 #ifdef ODBCINT64
00500 
00501 typedef ODBCINT64       SQLBIGINT;
00502 
00503 typedef unsigned ODBCINT64      SQLUBIGINT;
00504 
00505 #endif
00506 
00507 #endif  /* ODBCVER >= 0x0300 */
00508 
00509 
00510 
00511 /* internal representation of numeric data type */
00512 
00513 #if (ODBCVER >= 0x0300)
00514 
00515 #define SQL_MAX_NUMERIC_LEN             16
00516 
00517 typedef struct tagSQL_NUMERIC_STRUCT
00518 
00519 {
00520 
00521         SQLCHAR         precision;
00522 
00523         SQLSCHAR        scale;
00524 
00525         SQLCHAR         sign;   /* 1 if positive, 0 if negative */
00526 
00527         SQLCHAR         val[SQL_MAX_NUMERIC_LEN];
00528 
00529 } SQL_NUMERIC_STRUCT;
00530 
00531 #endif  /* ODBCVER >= 0x0300 */
00532 
00533 
00534 
00535 #if (ODBCVER >= 0x0350)
00536 
00537 #ifdef GUID_DEFINED
00538 
00539 typedef GUID    SQLGUID;
00540 
00541 #else
00542 
00543 /* size is 16 */
00544 
00545 typedef struct  tagSQLGUID
00546 
00547 {
00548 
00549     DWORD Data1;
00550 
00551     WORD Data2;
00552 
00553     WORD Data3;
00554 
00555     BYTE Data4[ 8 ];
00556 
00557 } SQLGUID;
00558 
00559 #endif  /* GUID_DEFINED */
00560 
00561 #endif  /* ODBCVER >= 0x0350 */
00562 
00563 
00564 
00565 typedef SQLULEN         BOOKMARK;
00566 
00567 
00568 
00569 #ifdef _WCHAR_T_DEFINED
00570 
00571 typedef wchar_t SQLWCHAR;
00572 
00573 #else
00574 
00575 typedef unsigned short SQLWCHAR;
00576 
00577 #endif
00578 
00579 
00580 
00581 #ifdef UNICODE
00582 
00583 typedef SQLWCHAR        SQLTCHAR;
00584 
00585 #else
00586 
00587 typedef SQLCHAR         SQLTCHAR;
00588 
00589 #endif  /* UNICODE */
00590 
00591 
00592 
00593 
00594 
00595 #endif     /* RC_INVOKED */
00596 
00597 
00598 
00599 
00600 
00601 #ifdef __cplusplus
00602 
00603 }                                    /* End of extern "C" { */
00604 
00605 #endif  /* __cplusplus */
00606 
00607 
00608 
00609 #endif /* #ifndef __SQLTYPES */
00610 

Generated on Wed Jul 26 13:30:38 2006 for XSB by  doxygen 1.4.5