home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 2000 September / VPR0009A.BIN / VS60SP4JPN / support / sqltypes.h < prev    next >
C/C++ Source or Header  |  1999-01-29  |  7KB  |  284 lines

  1. /*********************************************************************
  2. ** SQLTYPES.H - This file defines the types used in ODBC
  3. **
  4. ** (C) Copyright 1995-1998 By Microsoft Corp.
  5. **
  6. **        Created 04/10/95 for 2.50 specification
  7. **        Updated 12/11/95 for 3.00 specification
  8. *********************************************************************/
  9.  
  10. #ifndef __SQLTYPES
  11. #define __SQLTYPES
  12.  
  13. /* if ODBCVER is not defined, assume version 3.51 */
  14. #ifndef ODBCVER
  15. #define ODBCVER    0x0351
  16. #endif  /* ODBCVER */
  17.  
  18. #ifdef __cplusplus
  19. extern "C" {             /* Assume C declarations for C++   */
  20. #endif  /* __cplusplus */
  21.  
  22. /* environment specific definitions */
  23. #ifndef EXPORT
  24. #define EXPORT   
  25. #endif
  26.  
  27. #ifdef WIN32
  28. #define SQL_API  __stdcall
  29. #else
  30. #define SQL_API
  31. #endif
  32.  
  33. #ifndef RC_INVOKED
  34.  
  35. /* API declaration data types */
  36. typedef unsigned char   SQLCHAR;
  37. #if (ODBCVER >= 0x0300)
  38. typedef signed char     SQLSCHAR;
  39. typedef unsigned char   SQLDATE;
  40. typedef unsigned char   SQLDECIMAL;
  41. typedef double          SQLDOUBLE;
  42. typedef double          SQLFLOAT;
  43. #endif
  44. typedef long            SQLINTEGER;
  45. typedef unsigned long   SQLUINTEGER;
  46. #if (ODBCVER >= 0x0300)
  47. typedef unsigned char   SQLNUMERIC;
  48. #endif
  49. typedef void *          SQLPOINTER;
  50. #if (ODBCVER >= 0x0300)
  51. typedef float           SQLREAL;
  52. #endif
  53. typedef short           SQLSMALLINT;
  54. typedef unsigned short  SQLUSMALLINT;
  55. #if (ODBCVER >= 0x0300)
  56. typedef unsigned char   SQLTIME;
  57. typedef unsigned char   SQLTIMESTAMP;
  58. typedef unsigned char   SQLVARCHAR;
  59. #endif
  60.  
  61. /* function return type */
  62. typedef SQLSMALLINT     SQLRETURN;
  63.  
  64. /* generic data structures */
  65. #if (ODBCVER >= 0x0300)
  66. #if defined(WIN32)
  67. typedef void*                    SQLHANDLE;
  68. #else
  69. typedef SQLINTEGER        SQLHANDLE;
  70. #endif    /* defined(WIN32) */
  71. typedef SQLHANDLE               SQLHENV;
  72. typedef SQLHANDLE               SQLHDBC;
  73. typedef SQLHANDLE               SQLHSTMT;
  74. typedef SQLHANDLE               SQLHDESC;
  75. #else
  76. #if defined(WIN32)
  77. typedef void*                    SQLHENV;
  78. typedef void*                    SQLHDBC;
  79. typedef void*                    SQLHSTMT;
  80. #else
  81. typedef SQLINTEGER              SQLHENV;
  82. typedef SQLINTEGER              SQLHDBC;
  83. typedef SQLINTEGER              SQLHSTMT;
  84. #endif  /* defined(WIN32) */
  85. #endif /* ODBCVER >= 0x0300 */
  86.  
  87. /* SQL portable types for C */
  88. typedef unsigned char           UCHAR;
  89. typedef signed char             SCHAR;
  90. typedef SCHAR                   SQLSCHAR;
  91. typedef long int                SDWORD;
  92. typedef short int               SWORD;
  93. typedef unsigned long int       UDWORD;
  94. typedef unsigned short int      UWORD;
  95. typedef UDWORD                  SQLUINTEGER;
  96.  
  97. typedef signed long             SLONG;
  98. typedef signed short            SSHORT;
  99. typedef unsigned long           ULONG;
  100. typedef unsigned short          USHORT;
  101. typedef double                  SDOUBLE;
  102. typedef double                    LDOUBLE; 
  103. typedef float                   SFLOAT;
  104.  
  105. typedef void*                      PTR;
  106.  
  107. typedef void*                      HENV;
  108. typedef void*                      HDBC;
  109. typedef void*                      HSTMT;
  110.  
  111. typedef signed short            RETCODE;
  112.  
  113. #if defined(WIN32) || defined(OS2)
  114. typedef HWND                    SQLHWND;
  115. #elif defined (UNIX)
  116. typedef Widget                  SQLHWND;
  117. #else
  118. /* placehold for future O/S GUI window handle definition */
  119. typedef SQLPOINTER              SQLHWND;
  120. #endif
  121.  
  122. #ifndef    __SQLDATE
  123. #define    __SQLDATE
  124. /* transfer types for DATE, TIME, TIMESTAMP */
  125. typedef struct tagDATE_STRUCT
  126. {
  127.         SQLSMALLINT    year;
  128.         SQLUSMALLINT   month;
  129.         SQLUSMALLINT   day;
  130. } DATE_STRUCT;
  131.  
  132. #if (ODBCVER >= 0x0300)
  133. typedef DATE_STRUCT    SQL_DATE_STRUCT;
  134. #endif  /* ODBCVER >= 0x0300 */
  135.  
  136. typedef struct tagTIME_STRUCT
  137. {
  138.         SQLUSMALLINT   hour;
  139.         SQLUSMALLINT   minute;
  140.         SQLUSMALLINT   second;
  141. } TIME_STRUCT;
  142.  
  143. #if (ODBCVER >= 0x0300)
  144. typedef TIME_STRUCT    SQL_TIME_STRUCT;
  145. #endif /* ODBCVER >= 0x0300 */
  146.  
  147. typedef struct tagTIMESTAMP_STRUCT
  148. {
  149.         SQLSMALLINT    year;
  150.         SQLUSMALLINT   month;
  151.         SQLUSMALLINT   day;
  152.         SQLUSMALLINT   hour;
  153.         SQLUSMALLINT   minute;
  154.         SQLUSMALLINT   second;
  155.         SQLUINTEGER    fraction;
  156. } TIMESTAMP_STRUCT;
  157.  
  158. #if (ODBCVER >= 0x0300)
  159. typedef TIMESTAMP_STRUCT    SQL_TIMESTAMP_STRUCT;
  160. #endif  /* ODBCVER >= 0x0300 */
  161.  
  162.  
  163. /*
  164.  * enumerations for DATETIME_INTERVAL_SUBCODE values for interval data types
  165.  * these values are from SQL-92
  166.  */
  167.  
  168. #if (ODBCVER >= 0x0300)
  169. typedef enum 
  170. {
  171.     SQL_IS_YEAR                        = 1,
  172.     SQL_IS_MONTH                    = 2,
  173.     SQL_IS_DAY                        = 3,
  174.     SQL_IS_HOUR                        = 4,
  175.     SQL_IS_MINUTE                    = 5,
  176.     SQL_IS_SECOND                    = 6,
  177.     SQL_IS_YEAR_TO_MONTH            = 7,
  178.     SQL_IS_DAY_TO_HOUR                = 8,
  179.     SQL_IS_DAY_TO_MINUTE            = 9,
  180.     SQL_IS_DAY_TO_SECOND            = 10,
  181.     SQL_IS_HOUR_TO_MINUTE            = 11,
  182.     SQL_IS_HOUR_TO_SECOND            = 12,
  183.     SQL_IS_MINUTE_TO_SECOND            = 13
  184. } SQLINTERVAL;
  185.  
  186. #endif  /* ODBCVER >= 0x0300 */
  187.  
  188. #if (ODBCVER >= 0x0300)
  189. typedef struct tagSQL_YEAR_MONTH
  190. {
  191.         SQLUINTEGER        year;
  192.         SQLUINTEGER        month;
  193. } SQL_YEAR_MONTH_STRUCT;
  194.  
  195. typedef struct tagSQL_DAY_SECOND
  196. {
  197.         SQLUINTEGER        day;
  198.         SQLUINTEGER        hour;
  199.         SQLUINTEGER        minute;
  200.         SQLUINTEGER        second;
  201.         SQLUINTEGER        fraction;
  202. } SQL_DAY_SECOND_STRUCT;
  203.  
  204. typedef struct tagSQL_INTERVAL_STRUCT
  205. {
  206.     SQLINTERVAL        interval_type;
  207.     SQLSMALLINT        interval_sign;
  208.     union {
  209.         SQL_YEAR_MONTH_STRUCT        year_month;
  210.         SQL_DAY_SECOND_STRUCT        day_second;
  211.     } intval;
  212.  
  213. } SQL_INTERVAL_STRUCT;
  214.  
  215. #endif  /* ODBCVER >= 0x0300 */
  216.  
  217. #endif    /* __SQLDATE    */
  218.  
  219. /* the ODBC C types for SQL_C_SBIGINT and SQL_C_UBIGINT */
  220. #if (ODBCVER >= 0x0300)
  221. #if (_MSC_VER >= 900)
  222. #define ODBCINT64    __int64
  223. #endif  
  224.  
  225. /* If using other compilers, define ODBCINT64 to the 
  226.     approriate 64 bit integer type */
  227. #ifdef ODBCINT64
  228. typedef ODBCINT64    SQLBIGINT;
  229. typedef unsigned ODBCINT64    SQLUBIGINT;
  230. #endif
  231. #endif  /* ODBCVER >= 0x0300 */
  232.  
  233. /* internal representation of numeric data type */
  234. #if (ODBCVER >= 0x0300)
  235. #define SQL_MAX_NUMERIC_LEN        16
  236. typedef struct tagSQL_NUMERIC_STRUCT
  237. {
  238.     SQLCHAR        precision;
  239.     SQLSCHAR    scale;
  240.     SQLCHAR        sign;    /* 1 if positive, 0 if negative */
  241.     SQLCHAR        val[SQL_MAX_NUMERIC_LEN];
  242. } SQL_NUMERIC_STRUCT;
  243. #endif  /* ODBCVER >= 0x0300 */
  244.  
  245. #if (ODBCVER >= 0x0350)
  246. #ifdef GUID_DEFINED
  247. typedef GUID    SQLGUID;
  248. #else
  249. /* size is 16 */
  250. typedef struct  tagSQLGUID
  251. {
  252.     DWORD Data1;
  253.     WORD Data2;
  254.     WORD Data3;
  255.     BYTE Data4[ 8 ];
  256. } SQLGUID;
  257. #endif  /* GUID_DEFINED */
  258. #endif  /* ODBCVER >= 0x0350 */
  259.  
  260. typedef unsigned long int       BOOKMARK;
  261.  
  262. #ifdef _WCHAR_T_DEFINED
  263. typedef wchar_t SQLWCHAR;
  264. #else
  265. typedef unsigned short SQLWCHAR;
  266. #endif
  267.  
  268. #ifdef UNICODE
  269. typedef SQLWCHAR        SQLTCHAR;
  270. #else
  271. typedef SQLCHAR         SQLTCHAR;
  272. #endif  /* UNICODE */
  273.  
  274.  
  275.  
  276. #endif     /* RC_INVOKED */
  277.  
  278.  
  279. #ifdef __cplusplus
  280. }                                    /* End of extern "C" { */
  281. #endif  /* __cplusplus */
  282.  
  283. #endif /* #ifndef __SQLTYPES */
  284.