home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 December / PCWorld_1998-12_cd.iso / software / sybase / ASA / asa60.exe / data1.cab / h_files / odbc.h < prev    next >
C/C++ Source or Header  |  1998-07-27  |  97KB  |  3,155 lines

  1.  /****************************************************************
  2.  *       Copyright (C) 1988-1998, by Sybase, Inc.                *
  3.  *       All rights reserved. No part of this software may be    *
  4.  *       reproduced in any form or by any means - graphic,       *
  5.  *       electronic or mechanical, including photocopying,       *
  6.  *       recording, taping or information storage and retrieval  *
  7.  *       systems - except with the written permission of         *
  8.  *       Sybase, Inc.                                            *
  9.  ****************************************************************/
  10.  
  11. #ifndef _ODBC_H_INCLUDED
  12. #define _ODBC_H_INCLUDED
  13. #define __ODBC_H_INCLUDED
  14.  
  15. #ifdef __cplusplus
  16. extern "C" {
  17. #endif /* __cplusplus */
  18.  
  19. /*    ODBC.H
  20.     Definitions for using ODBC functions
  21. */
  22.  
  23. #ifdef __MWERKS__
  24.   #include "macwsql.h"
  25.   #include <stddef.h>    // for wchar_t
  26.   #define ODBC_MAC
  27. #endif  
  28.  
  29. /* Platform-specific definitions */
  30.  
  31. #ifndef ODBC_UNIX
  32.  #ifndef ODBC_DOS
  33.   #ifndef ODBC_DOS32
  34.    #ifndef ODBC_MAC
  35.     #ifndef ODBC_OS2
  36.      #ifndef ODBC_OS216
  37.       #ifndef ODBC_QNX
  38.        #ifndef ODBC_WINNT
  39.         #ifndef ODBC_WIN32
  40.      #ifndef ODBC_WIN
  41.       /* Default platform is Microsoft Windows */
  42.       #ifdef __WINDOWS_386__
  43.        /* Must be WATCOM C 32 bit Windows */
  44.        #define ODBC_WIN32
  45.       #else
  46.        #define ODBC_WIN
  47.       #endif
  48.          #endif
  49.         #endif
  50.        #endif
  51.       #endif
  52.      #endif
  53.     #endif
  54.    #endif
  55.   #endif
  56.  #endif
  57. #endif
  58. #ifdef ODBC_DOS
  59.      #define ODBC_API
  60.      #define ODBCFAR
  61. #endif /* ODBC_DOS */
  62. #ifdef ODBC_DOS32
  63.     #define ODBC_API
  64.     #define ODBCFAR
  65. #endif /* ODBC_DOS32 */
  66. #ifdef ODBC_MAC
  67.     #define ODBC_API    pascal
  68.     #define ODBCFAR
  69. #endif /* ODBC_MAC */
  70. #ifdef ODBC_OS2
  71.     #define ODBC_API    __syscall
  72.     #define ODBCFAR
  73. #endif /* ODBC_OS2 */
  74. #ifdef ODBC_QNX
  75.     #define ODBC_API
  76.     #define ODBCFAR
  77. #endif /* ODBC_QNX */
  78. #ifdef ODBC_WINNT
  79.     #define ODBC_API    __stdcall
  80.     #define ODBCFAR
  81. #endif /* ODBC_WINNT */
  82. #ifdef ODBC_WIN32
  83.     #define ODBC_API
  84.     #define ODBCFAR
  85. #endif /* ODBC_WIN32 */
  86. #ifdef ODBC_WIN
  87.     #define ODBC_API    far pascal
  88.     #define ODBCFAR    far
  89. #endif /* ODBC_WIN */
  90. #ifdef ODBC_UNIX
  91.     #define ODBC_API
  92.     #define ODBCFAR
  93. #endif /* ODBC_UNIX */
  94.  
  95. #ifndef ODBCVER
  96. #define ODBCVER        0x0300
  97. #endif /* ODBCVER */
  98.  
  99.  
  100. /******************************************************************/
  101. /*  Define structure packing macro based on environment           */
  102. /******************************************************************/
  103.  
  104. #if defined( ODBC_DOS )    \
  105. ||  defined( ODBC_DOS32 )    \
  106. ||  defined( ODBC_DOS386 )    \
  107. ||  defined( ODBC_WIN ) \
  108. ||  defined( ODBC_WIN32 )    \
  109. ||  defined( ODBC_WINNT )    \
  110. ||  defined( ODBC_QNX )    \
  111. ||  defined( ODBC_OS2 )    \
  112. ||  defined( ODBC_OS216 )    \
  113. ||  defined( ODBC_MAC )
  114.     #define _ODBC_PACK_STRUCTURES    1
  115. #endif
  116.  
  117. /* RETCODES */
  118.  
  119. enum enumRETCODE {
  120.     SQL_INVALID_HANDLE    = -2,
  121.     SQL_ERROR,
  122.     SQL_SUCCESS,
  123.     SQL_SUCCESS_WITH_INFO,
  124.     SQL_STILL_EXECUTING,
  125.     SQL_NEED_DATA    = 99,
  126.     SQL_NO_DATA_FOUND    = 100
  127.     #if (ODBCVER >= 0x0300)
  128.     ,
  129.     SQL_NO_DATA        = 100
  130.     #endif /* ODBCVER >= 0x0300 */
  131. };
  132.  
  133. typedef signed short    RETCODE;
  134.  
  135. /* Test for SQL_SUCCESS or SQL_SUCCESS_WITH_INFO */
  136. #define SQL_SUCCEEDED( rc )    (((rc)&(~1))==0)
  137.  
  138. /* SQL Types */
  139.  
  140. enum enumSQLTYPE {
  141.     SQL_TYPE_NULL    = 0,
  142.     SQL_UNKNOWN_TYPE    = 0,
  143.     /* ANSI numbering */
  144.     SQL_CHAR,
  145.     SQL_NUMERIC,
  146.     SQL_DECIMAL,
  147.     SQL_INTEGER,
  148.     SQL_SMALLINT,
  149.     SQL_FLOAT,
  150.     SQL_REAL,
  151.     SQL_DOUBLE,
  152.     SQL_DATE,
  153.     #if (ODBCVER >= 0x0300)
  154.     SQL_DATETIME    = 9,
  155.     #endif /* ODBCVER >= 0x0300 */
  156.     SQL_TIME,
  157.     #if (ODBCVER >= 0x0300)
  158.     SQL_INTERVAL    = 10,
  159.     #endif /* ODBCVER >= 0x0300 */
  160.     SQL_TIMESTAMP,
  161.     SQL_VARCHAR,
  162.     #if (ODBCVER >= 0x0300)
  163.     /* Shortcuts */
  164.     SQL_TYPE_DATE    = 91,
  165.     SQL_TYPE_TIME,
  166.     SQL_TYPE_TIMESTAMP,
  167.     /* Miscellaneous types */
  168.     SQL_DEFAULT        = 99,
  169.     SQL_ARD_TYPE    = -99,
  170.     #endif /* ODBCVER >= 0x0300 */
  171.     /* ODBC extensions */
  172.     SQL_BIT        = -7,
  173.     SQL_TINYINT,
  174.     SQL_BIGINT,
  175.     SQL_LONGVARBINARY,
  176.     SQL_VARBINARY,
  177.     SQL_BINARY,
  178.     SQL_LONGVARCHAR
  179. };
  180.  
  181. enum enumUNICODE {
  182.     SQL_UNICODE_LONGVARCHAR    = 97,
  183.     SQL_UNICODE_VARCHAR,
  184.     SQL_UNICODE_CHAR,        /* = SQL_UNICODE */
  185.     SQL_UNICODE            = -95
  186. };
  187.  
  188. #if (ODBCVER >= 0x0300)
  189. enum enumDateTimeCode {
  190.     SQL_CODE_DATE    = 1,
  191.     SQL_CODE_TIME,
  192.     SQL_CODE_TIMESTAMP
  193. };
  194.  
  195. enum enumIntervalCode {
  196.     SQL_CODE_YEAR    = 1,
  197.     SQL_CODE_MONTH,
  198.     SQL_CODE_DAY,
  199.     SQL_CODE_HOUR,
  200.     SQL_CODE_MINUTE,
  201.     SQL_CODE_SECOND,
  202.     SQL_CODE_YEAR_TO_MONTH,
  203.     SQL_CODE_DAY_TO_HOUR,
  204.     SQL_CODE_DAY_TO_MINUTE,
  205.     SQL_CODE_DAY_TO_SECOND,
  206.     SQL_CODE_HOUR_TO_MINUTE,
  207.     SQL_CODE_HOUR_TO_SECOND,
  208.     SQL_CODE_MINUTE_TO_SECOND
  209. };
  210. #define SQL_INTERVAL_YEAR        (100 + SQL_CODE_YEAR)
  211. #define SQL_INTERVAL_MONTH        (100 + SQL_CODE_MONTH)
  212. #define SQL_INTERVAL_DAY        (100 + SQL_CODE_DAY) 
  213. #define SQL_INTERVAL_HOUR        (100 + SQL_CODE_HOUR) 
  214. #define SQL_INTERVAL_MINUTE        (100 + SQL_CODE_MINUTE) 
  215. #define SQL_INTERVAL_SECOND        (100 + SQL_CODE_SECOND)
  216. #define SQL_INTERVAL_YEAR_TO_MONTH    (100 + SQL_CODE_YEAR_TO_MONTH)
  217. #define SQL_INTERVAL_DAY_TO_HOUR    (100 + SQL_CODE_DAY_TO_HOUR) 
  218. #define SQL_INTERVAL_DAY_TO_MINUTE    (100 + SQL_CODE_DAY_TO_MINUTE) 
  219. #define SQL_INTERVAL_DAY_TO_SECOND    (100 + SQL_CODE_DAY_TO_SECOND) 
  220. #define SQL_INTERVAL_HOUR_TO_MINUTE    (100 + SQL_CODE_HOUR_TO_MINUTE)
  221. #define SQL_INTERVAL_HOUR_TO_SECOND    (100 + SQL_CODE_HOUR_TO_SECOND) 
  222. #define SQL_INTERVAL_MINUTE_TO_SECOND    (100 + SQL_CODE_MINUTE_TO_SECOND)
  223. #else
  224. #define SQL_INTERVAL_YEAR        (-80)
  225. #define SQL_INTERVAL_MONTH        (-81)
  226. #define SQL_INTERVAL_YEAR_TO_MONTH    (-82)
  227. #define SQL_INTERVAL_DAY        (-83)
  228. #define SQL_INTERVAL_HOUR        (-84)
  229. #define SQL_INTERVAL_MINUTE        (-85)
  230. #define SQL_INTERVAL_SECOND        (-86)
  231. #define SQL_INTERVAL_DAY_TO_HOUR    (-87)
  232. #define SQL_INTERVAL_DAY_TO_MINUTE    (-88)
  233. #define SQL_INTERVAL_DAY_TO_SECOND    (-89)
  234. #define SQL_INTERVAL_HOUR_TO_MINUTE    (-90)
  235. #define SQL_INTERVAL_HOUR_TO_SECOND    (-91)
  236. #define SQL_INTERVAL_MINUTE_TO_SECOND    (-92)
  237. #endif /* ODBCVER >= 0x0300 */
  238.  
  239. #if (ODBCVER < 0x0300)
  240. #define SQL_TYPE_DRIVER_START    SQL_INTERVAL_YEAR
  241. #define SQL_TYPE_DRIVER_END    SQL_UNICODE_LONGVARCHAR
  242. #define SQL_TYPE_MIN        SQL_BIT
  243. #define SQL_TYPE_MAX        SQL_VARCHAR
  244. #endif /* ODBCVER < 0x0300 */
  245. #define SQL_ALL_TYPES        0
  246.  
  247. #if (ODBCVER >= 0x0200)
  248.     #define SQL_SIGNED_OFFSET    (-20)
  249.     #define SQL_UNSIGNED_OFFSET    (-22)
  250. #endif /* ODBCVER >= 0x0200 */
  251.  
  252. /* C types -- defined in terms of corresponding SQL types */
  253.  
  254. #define SQL_C_CHAR        SQL_CHAR
  255. #define SQL_C_LONG        SQL_INTEGER
  256. #define SQL_C_SHORT        SQL_SMALLINT
  257. #define SQL_C_FLOAT        SQL_REAL
  258. #define SQL_C_DOUBLE        SQL_DOUBLE
  259. #define SQL_C_DEFAULT        99
  260. #define SQL_C_DATE        SQL_DATE
  261. #define SQL_C_TIME        SQL_TIME
  262. #define SQL_C_TIMESTAMP        SQL_TIMESTAMP
  263. #define SQL_C_BINARY        SQL_BINARY
  264. #define SQL_C_BIT        SQL_BIT
  265. #define SQL_C_TINYINT        SQL_TINYINT
  266. #if (ODBCVER >= 0x0200)
  267.     #define SQL_C_SLONG        (SQL_C_LONG+SQL_SIGNED_OFFSET)
  268.     #define SQL_C_SSHORT    (SQL_C_SHORT+SQL_SIGNED_OFFSET)
  269.     #define SQL_C_STINYINT    (SQL_TINYINT+SQL_SIGNED_OFFSET)
  270.     #define SQL_C_ULONG        (SQL_C_LONG+SQL_UNSIGNED_OFFSET)
  271.     #define SQL_C_USHORT    (SQL_C_SHORT+SQL_UNSIGNED_OFFSET)
  272.     #define SQL_C_UTINYINT    (SQL_TINYINT+SQL_UNSIGNED_OFFSET)
  273.     #define SQL_C_BOOKMARK    SQL_C_ULONG
  274. #endif /* ODBCVER >= 0x0200 */
  275. #if (ODBCVER >= 0x0300)
  276. #define SQL_C_NUMERIC            SQL_NUMERIC
  277. #define SQL_C_TYPE_DATE            SQL_TYPE_DATE
  278. #define SQL_C_TYPE_TIME            SQL_TYPE_TIME
  279. #define SQL_C_TYPE_TIMESTAMP        SQL_TYPE_TIMESTAMP
  280. #define SQL_C_INTERVAL_YEAR        SQL_INTERVAL_YEAR
  281. #define SQL_C_INTERVAL_MONTH        SQL_INTERVAL_MONTH
  282. #define SQL_C_INTERVAL_DAY        SQL_INTERVAL_DAY
  283. #define SQL_C_INTERVAL_HOUR        SQL_INTERVAL_HOUR
  284. #define SQL_C_INTERVAL_MINUTE        SQL_INTERVAL_MINUTE
  285. #define SQL_C_INTERVAL_SECOND        SQL_INTERVAL_SECOND
  286. #define SQL_C_INTERVAL_YEAR_TO_MONTH    SQL_INTERVAL_YEAR_TO_MONTH
  287. #define SQL_C_INTERVAL_DAY_TO_HOUR    SQL_INTERVAL_DAY_TO_HOUR
  288. #define SQL_C_INTERVAL_DAY_TO_MINUTE    SQL_INTERVAL_DAY_TO_MINUTE
  289. #define SQL_C_INTERVAL_DAY_TO_SECOND    SQL_INTERVAL_DAY_TO_SECOND
  290. #define SQL_C_INTERVAL_HOUR_TO_MINUTE    SQL_INTERVAL_HOUR_TO_MINUTE
  291. #define SQL_C_INTERVAL_HOUR_TO_SECOND    SQL_INTERVAL_HOUR_TO_SECOND
  292. #define SQL_C_INTERVAL_MINUTE_TO_SECOND    SQL_INTERVAL_MINUTE_TO_SECOND
  293. #define SQL_C_SBIGINT            (SQL_BIGINT+SQL_SIGNED_OFFSET)
  294. #define SQL_C_UBIGINT            (SQL_BIGINT+SQL_UNSIGNED_OFFSET)
  295. #define SQL_C_VARBOOKMARK        SQL_C_BINARY
  296. #endif /* ODBCVER >= 0x0300 */
  297.  
  298. /* Portable C data types */
  299.  
  300. #if !defined(OS2DEF_INCLUDED) && !defined(_WINDEF_)
  301. typedef unsigned char        UCHAR;
  302. #endif /* !defined( OS2DEF_INCLUDED ) && !defined( _WINDEF_ ) */
  303. typedef signed char        SCHAR;
  304. typedef unsigned short        UWORD;
  305. typedef signed short        SWORD;
  306. typedef unsigned long        UDWORD;
  307. typedef signed long        SDWORD;
  308. typedef double            SDOUBLE;
  309. typedef double            LDOUBLE;
  310. typedef float            SFLOAT;
  311. typedef void ODBCFAR *        PTR;
  312. typedef signed long        SLONG;
  313. typedef signed short        SSHORT;
  314. typedef unsigned long        ULONG;
  315. typedef unsigned short        USHORT;
  316. #ifndef _WCHAR_T_DEFINED
  317. #define _WCHAR_T_DEFINED
  318. #if !defined(_WCHAR_T) && ( !defined(AIX) && !defined(HP) )
  319. typedef unsigned short wchar_t;
  320. #endif
  321. #endif
  322.  
  323. /* API data types */
  324.  
  325. typedef unsigned char        SQLCHAR;
  326. typedef long            SQLINTEGER;
  327. typedef unsigned long        SQLUINTEGER;
  328. typedef void ODBCFAR *        SQLPOINTER;
  329. typedef short            SQLSMALLINT;
  330. typedef unsigned short        SQLUSMALLINT;
  331. typedef SQLSMALLINT        SQLRETURN;
  332. typedef wchar_t            SQLWCHAR;
  333. #ifdef UNICODE
  334. typedef SQLWCHAR        SQLTCHAR;
  335. #else
  336. typedef SQLCHAR            SQLTCHAR;
  337. #endif /* UNICODE */
  338. typedef PTR            SQLHANDLE;
  339. typedef SQLHANDLE        SQLHENV;
  340. typedef SQLHANDLE        SQLHDBC;
  341. typedef SQLHANDLE        SQLHSTMT;
  342. typedef SQLHANDLE        SQLHDESC;
  343. #if (ODBCVER >= 0x0300) && !defined( ODBC_MAC ) // odbc 2.0 needs this on mac
  344. typedef signed char        SQLSCHAR;
  345. typedef unsigned char        SQLDATE;
  346. typedef unsigned char        SQLDECIMAL;
  347. typedef double            SQLDOUBLE;
  348. typedef double            SQLFLOAT;
  349. typedef unsigned char        SQLNUMERIC;
  350. typedef float            SQLREAL;
  351. typedef unsigned char        SQLTIME;
  352. typedef unsigned char        SQLTIMESTAMP;
  353. typedef unsigned char        SQLVARCHAR;
  354. #if defined(_MSC_VER)
  355.   #if (_MSC_VER >= 900)
  356.     #define ODBCINT64        __int64
  357.   #endif /* _MSC_VER >= 900 */
  358. #endif
  359. #if defined(__WATCOMC__)
  360.   #if __WATCOMC__ >= 1100
  361.     #define ODBCINT64        __int64
  362.   #endif
  363. #endif
  364. #ifdef ODBCINT64
  365. typedef ODBCINT64        SQLBIGINT;
  366. typedef unsigned ODBCINT64    SQLUBIGINT;
  367. #endif /* ODBCINT64 */
  368. #endif /* (ODBCVER >= 0x0300) && !defined( ODBC_MAC ) */
  369.  
  370. /* Define some common things often found in WINDOWS.H */
  371.  
  372. #if defined( __BORLANDC__ ) && defined( __WINDOWS_H ) && !defined( _INC_WINDOWS )
  373.     #define _INC_WINDOWS
  374. #endif
  375.  
  376. #if defined( MAC )
  377.     #if defined( MACODBC ) && MACODBC
  378.     /* ODBC 2.0 Driver Manager and SDK */
  379.     /* BOOL is now defined in "win2mac.h" from ODBC 2.0 SDK */
  380.     #include "win2mac.h"
  381.     #elif defined( USE_ODBC_DRIVER )
  382.     typedef unsigned short        BOOL;
  383.     #else
  384.     typedef int            BOOL;
  385.     #endif /* defined( MACODBC ) && MACODBC */
  386. #elif !defined(_INC_WINDOWS) && !defined(OS2DEF_INCLUDED) && !defined(_WINDEF_)
  387.     typedef int                BOOL;
  388. #endif /* defined( MAC ) */
  389.  
  390. #if !defined( _WSQLODBC_H )
  391.     #if defined( MAC )
  392.         typedef struct GrafPort *    HWND;
  393.     #elif !defined(_INC_WINDOWS) && !defined(OS2DEF_INCLUDED) && !defined(_WINDEF_)
  394.         typedef unsigned int        HWND;
  395.     #endif /* defined( MAC ) */
  396. #endif /* !defined( _WSQLODBC_H ) */
  397.  
  398. #if !defined(TRUE)
  399. #define TRUE        1
  400. #endif /* !defined( TRUE ) */
  401. #if !defined(FALSE)
  402. #define FALSE        0
  403. #endif /* !defined( FALSE ) */
  404.  
  405. /* CLI option values */
  406. #if (ODBCVER >= 0x0300)
  407. #define SQL_FALSE    0
  408. #define SQL_TRUE    1
  409. #endif /* ODBCVER >= 0x0300 */
  410.  
  411. /* Handle types */
  412.  
  413. #if defined( MAC )  &&  defined( USE_ODBC_DRIVER )
  414.     typedef struct ENV **  HENV;
  415.     typedef struct DBC **  HDBC;
  416.     typedef struct STMT ** HSTMT;
  417. #else
  418.     typedef void ODBCFAR * HENV;
  419.     typedef void ODBCFAR * HDBC;
  420.     typedef void ODBCFAR * HSTMT;
  421. #endif /* defined( MAC ) && defined( USE_ODBC_DRIVER ) */
  422.  
  423. #if defined( ODBC_WIN) || defined( ODBC_WIN32 ) || defined( ODBC_WINNT ) || defined( ODBC_OS2 ) || defined( ODBC_OS216 )
  424. typedef HWND        SQLHWND;
  425. #elif defined( ODBC_UNIX )
  426. typedef unsigned long    SQLHWND;
  427. #else
  428. typedef SQLPOINTER    SQLHWND;
  429. #endif /* defined( ODBC_WIN32 ) || defined( ODBC_WINNT ) || defined( ODBC_OS2 ) || defined( ODBC_OS216 ) */
  430.  
  431. #define SQL_NULL_HENV    0
  432. #define SQL_NULL_HDBC    0
  433. #define SQL_NULL_HSTMT    0
  434. #if (ODBCVER >= 0x0300)
  435. #define SQL_NULL_HDESC    0
  436. #define SQL_NULL_HANDLE    0L
  437. #endif /* ODBCVER >= 0x0300 */
  438.  
  439. #if (ODBCVER >= 0x0300)
  440. enum enumHANDLETYPE {
  441.     SQL_HANDLE_ENV    = 1,
  442.     SQL_HANDLE_DBC,
  443.     SQL_HANDLE_STMT,
  444.     SQL_HANDLE_DESC,
  445.     SQL_HANDLE_SENV
  446. };
  447. #endif /* ODBCVER >= 0x0300 */
  448.  
  449. /* Special length values */
  450.  
  451. enum enumLENGTH {
  452.     SQL_IGNORE        = -6,
  453.     SQL_DEFAULT_PARAM,
  454.     SQL_NO_TOTAL,
  455.     SQL_NTS,
  456.     SQL_DATA_AT_EXEC,
  457.     SQL_NULL_DATA
  458. };
  459. #if (ODBCVER >= 0x0300)
  460. #define SQL_COLUMN_IGNORE        SQL_IGNORE
  461. #endif /* ODBCVER >= 0x0300 */
  462.  
  463. #define SQL_NTSL    -3L
  464.     
  465. /* Miscellaneous constants */
  466. #define SQL_SPEC_MAJOR            3
  467. #define SQL_SPEC_MINOR            00
  468. #define SQL_SPEC_STRING            "03.00"
  469. #define SQL_SQLSTATE_SIZE        5
  470. #define    SQL_MAX_MESSAGE_LENGTH        512
  471. #define SQL_MAX_DSN_LENGTH        32
  472. #define SQL_MAX_OPTION_STRING_LENGTH    256
  473.  
  474. /* C structures */
  475.  
  476. #if (ODBCVER >= 0x0300)
  477. #define SQL_DATE_LEN        10
  478. #define    SQL_TIME_LEN        8
  479. #define SQL_TIMESTAMP_LEN    19
  480. #endif /* ODBCVER >= 0x0300 */
  481.  
  482. #ifndef __SQLDATE
  483. #define __SQLDATE
  484. #if defined( ODBC_PACK_STRUCTURES )
  485. #include "pshpk2.h"
  486. #endif
  487. typedef struct tagDATE_STRUCT {
  488.     SQLSMALLINT        year;
  489.     SQLUSMALLINT    month;
  490.     SQLUSMALLINT    day;
  491. } DATE_STRUCT;
  492.  
  493. typedef struct tagTIME_STRUCT {
  494.     SQLUSMALLINT    hour;
  495.     SQLUSMALLINT    minute;
  496.     SQLUSMALLINT    second;
  497. } TIME_STRUCT;
  498.  
  499. typedef struct tagTIMESTAMP_STRUCT {
  500.     SQLSMALLINT        year;
  501.     SQLUSMALLINT    month;
  502.     SQLUSMALLINT    day;
  503.     SQLUSMALLINT    hour;
  504.     SQLUSMALLINT    minute;
  505.     SQLUSMALLINT    second;
  506.     SQLUINTEGER        fraction;
  507. } TIMESTAMP_STRUCT;
  508.  
  509. #if (ODBCVER >= 0x0300)
  510. typedef DATE_STRUCT        SQL_DATE_STRUCT;
  511. typedef TIME_STRUCT        SQL_TIME_STRUCT;
  512. typedef TIMESTAMP_STRUCT    SQL_TIMESTAMP_STRUCT;
  513.  
  514. typedef enum {
  515.     SQL_IS_YEAR = 1,
  516.     SQL_IS_MONTH,
  517.     SQL_IS_DAY,
  518.     SQL_IS_HOUR,
  519.     SQL_IS_MINUTE,
  520.     SQL_IS_SECOND,
  521.     SQL_IS_YEAR_TO_MONTH,
  522.     SQL_IS_DAY_TO_HOUR,
  523.     SQL_IS_DAY_TO_MINUTE,
  524.     SQL_IS_DAY_TO_SECOND,
  525.     SQL_IS_HOUR_TO_MINUTE,
  526.     SQL_IS_HOUR_TO_SECOND,
  527.     SQL_IS_MINUTE_TO_SECOND
  528. } SQLINTERVAL;
  529.  
  530. typedef struct tagSQL_YEAR_MONTH {
  531.     SQLUINTEGER        year;
  532.     SQLUINTEGER        month;
  533. } SQL_YEAR_MONTH_STRUCT;
  534.  
  535. typedef struct tagSQL_DAY_SECOND {
  536.     SQLUINTEGER        day;
  537.     SQLUINTEGER        hour;
  538.     SQLUINTEGER        minute;
  539.     SQLUINTEGER        second;
  540.     SQLUINTEGER        fraction;
  541. } SQL_DAY_SECOND_STRUCT;
  542.  
  543. typedef struct tagSQL_INTERVAL_STRUCT {
  544.     SQLINTERVAL        interval_type;
  545.     SQLSMALLINT        interval_sign;
  546.     union {
  547.     SQL_YEAR_MONTH_STRUCT    year_month;
  548.     SQL_DAY_SECOND_STRUCT    day_second;
  549.     } intval;
  550. } SQL_INTERVAL_STRUCT;
  551. #endif /* ODBCVER >= 0x0300 */
  552. #endif /* __SQLDATE */
  553.  
  554. #if (ODBCVER >= 0x0300)
  555. #define SQL_MAX_NUMERIC_LEN    16
  556. typedef struct tagSQL_NUMERIC_STRUCT {
  557.     SQLCHAR        precision;
  558.     SQLSCHAR        scale;
  559.     SQLCHAR        sign;    /* 1 if positive, 0 if negative */
  560.     SQLCHAR        val[ SQL_MAX_NUMERIC_LEN ];
  561. } SQL_NUMERIC_STRUCT;
  562. #endif  /* ODBCVER >= 0x0300 */
  563.  
  564. #if (ODBCVER >= 0x0200)
  565. typedef unsigned long int    BOOKMARK;
  566. #endif /* ODBCVER >= 0x0200 */
  567.  
  568. #if defined( ODBC_PACK_STRUCTURES )
  569. #include "poppk.h"
  570. #endif
  571.  
  572. /* Values that may be defined elsewhere */
  573.  
  574. #ifndef NULL
  575. #define NULL        0
  576. #endif /* NULL */
  577.  
  578. /* API functions -- handles */
  579.  
  580. #if (ODBCVER >= 0x0300)
  581. SQLRETURN ODBC_API SQLAllocHandle(    /* CORE */
  582.     SQLSMALLINT        HandleType,
  583.     SQLHANDLE        InputHandle,
  584.     SQLHANDLE ODBCFAR *    OutputHandle );
  585.  
  586. SQLRETURN ODBC_API SQLFreeHandle(    /* CORE */
  587.     SQLSMALLINT        HandleType,
  588.     SQLHANDLE        Handle );
  589.  
  590. SQLRETURN ODBC_API SQLAllocHandleStd(
  591.     SQLSMALLINT        fHandleType,
  592.     SQLHANDLE        hInput,
  593.     SQLHANDLE ODBCFAR *    phOutput );
  594. #endif /* ODBCVER >= 0x0300 */
  595.  
  596. /* -------------------------------------------------------------------- */
  597. /* SQLAllocHandleStd implemented to be compatible with X/Open standard  */
  598. /* An application should not call SQLAllocHandleStd directly            */
  599. /* -------------------------------------------------------------------- */
  600. #ifdef ODBC_STD
  601. #define SQLAllocHandle        SQLAllocHandleStd
  602. #define SQLAllocEnv( phenv )    SQLAllocHandleStd( \
  603.                 SQL_HANDLE_ENV, SQL_NULL_HANDLE, phenv )
  604.  
  605. /* Internal type subcodes */
  606. #define SQL_YEAR        SQL_CODE_YEAR
  607. #define SQL_MONTH        SQL_CODE_MONTH
  608. #define SQL_DAY            SQL_CODE_DAY
  609. #define SQL_HOUR        SQL_CODE_HOUR
  610. #define SQL_MINUTE        SQL_CODE_MINUTE
  611. #define SQL_SECOND        SQL_CODE_SECOND
  612. #define SQL_YEAR_TO_MONTH    SQL_CODE_YEAR_TO_MONTH
  613. #define SQL_DAY_TO_HOUR        SQL_CODE_DAY_TO_HOUR
  614. #define SQL_DAY_TO_MINUTE    SQL_CODE_DAY_TO_MINUTE
  615. #define SQL_DAY_TO_SECOND    SQL_CODE_DAY_TO_SECOND
  616. #define SQL_HOUR_TO_MINUTE    SQL_CODE_HOUR_TO_MINUTE
  617. #define SQL_HOUR_TO_SECOND    SQL_CODE_HOUR_TO_SECOND
  618. #define SQL_MINUTE_TO_SECOND    SQL_CODE_MINUTE_TO_SECOND
  619. #endif /* ODBC_STD */
  620.  
  621. /* API functions -- environment */
  622.  
  623. SQLRETURN ODBC_API SQLAllocEnv(        /* CORE */
  624.     SQLHENV ODBCFAR *    EnvironmentHandle );
  625.  
  626. SQLRETURN ODBC_API SQLError(                /* CORE */
  627.     SQLHENV            EnvironmentHandle,
  628.     SQLHDBC            ConnectionHandle,
  629.     SQLHSTMT            StatementHandle,
  630.     SQLCHAR ODBCFAR *        Sqlstate,        /* Always SQLSTATE_SIZE+1 bytes */
  631.     SQLINTEGER ODBCFAR *    NativeError,
  632.     SQLCHAR ODBCFAR *        MessageText,
  633.     SQLSMALLINT            BufferLength,
  634.     SQLSMALLINT ODBCFAR *    TextLength );
  635.  
  636. SQLRETURN ODBC_API SQLDataSources(    /* Level 2 */
  637.     SQLHENV            EnvironmentHandle,
  638.     SQLUSMALLINT        Direction,    /* enumSQLFetchType */
  639.     SQLCHAR ODBCFAR *        ServerName,
  640.     SQLSMALLINT            BufferLength1,
  641.     SQLSMALLINT ODBCFAR *    NameLength1,
  642.     SQLCHAR ODBCFAR *        Description,
  643.     SQLSMALLINT            BufferLength2,
  644.     SQLSMALLINT ODBCFAR *    NameLength2 );
  645.  
  646. SQLRETURN ODBC_API SQLFreeEnv(        /* CORE */
  647.     SQLHENV            EnvironmentHandle );
  648.  
  649. #if (ODBCVER >= 0x0300)
  650. enum enumODBCVersion {
  651.     SQL_OV_ODBC2        = 2UL,
  652.     SQL_OV_ODBC3        = 3UL
  653. };
  654.  
  655. enum enumConnectionPooling {
  656.     SQL_CP_OFF            = 0UL,
  657.     SQL_CP_ONE_PER_DRIVER    = 1UL,
  658.     SQL_CP_ONE_PER_HENV        = 2UL
  659. };
  660.  
  661. enum enumCPMatch {
  662.     SQL_CP_STRICT_MATCH        = 0UL,
  663.     SQL_CP_RELAXED_MATCH    = 1UL
  664. };
  665.  
  666. /* Special values for certain options */
  667. #define SQL_CP_DEFAULT        SQL_CP_OFF
  668. #define SQL_CP_MATCH_DEFAULT    SQL_CP_STRICT_MATCH
  669.  
  670. SQLRETURN ODBC_API SQLSetEnvAttr(
  671.     SQLHENV            EnvironmentHandle,
  672.     SQLINTEGER            Attribute,    /* enumSQLEnvAttr */
  673.     SQLPOINTER            Value,
  674.     SQLINTEGER            StringLength );
  675.  
  676. SQLRETURN ODBC_API SQLGetEnvAttr(
  677.     SQLHENV            EnvironmentHandle,
  678.     SQLINTEGER            Attribute,    /* enumSQLEnvAttr */
  679.     SQLPOINTER            Value,
  680.     SQLINTEGER            BufferLength,
  681.     SQLINTEGER ODBCFAR *    StringLength );
  682. #endif /* ODBCVER >= 0x0300 */
  683.  
  684. /* API functions -- connections */
  685.  
  686. SQLRETURN ODBC_API SQLAllocConnect(    /* CORE */
  687.     SQLHENV        EnvironmentHandle,
  688.     SQLHDBC ODBCFAR *    ConnectionHandle );
  689.  
  690. SQLRETURN ODBC_API SQLConnect(        /* CORE */
  691.     SQLHDBC        ConnectionHandle,
  692.     SQLCHAR ODBCFAR *    ServerName,
  693.     SQLSMALLINT        NameLength1,
  694.     SQLCHAR ODBCFAR *    UserName,
  695.     SQLSMALLINT        NameLength2,
  696.     SQLCHAR ODBCFAR *    Authentication,
  697.     SQLSMALLINT        NameLength3 );
  698.  
  699. enum enumSQLMode {
  700.     SQL_MODE_READ_WRITE        = 0UL,
  701.     SQL_MODE_READ_ONLY        = 1UL
  702. };
  703.     
  704. enum enumSQLDriverConnect {
  705.     SQL_DRIVER_NOPROMPT,
  706.     SQL_DRIVER_COMPLETE,
  707.     SQL_DRIVER_PROMPT,
  708.     SQL_DRIVER_COMPLETE_REQUIRED
  709. };
  710.  
  711. SQLRETURN ODBC_API SQLDriverConnect(            /* Level 1 */
  712.     SQLHDBC            hdbc,
  713.     SQLHWND            hwnd,
  714.     SQLCHAR ODBCFAR *        szConnStrIn,        /* input connection string */
  715.     SQLSMALLINT            cbConnStrIn,
  716.     SQLCHAR ODBCFAR *        szConnStrOut,
  717.     SQLSMALLINT            cbConnStrOutMax,
  718.     SQLSMALLINT ODBCFAR *    pcbConnStrOut,
  719.     SQLUSMALLINT        fDriverCompletion );    /* enumSQLDriverConnect */
  720.  
  721. SQLRETURN ODBC_API SQLBrowseConnect(        /* Level 2 */
  722.     SQLHDBC            hdbc,
  723.     SQLCHAR ODBCFAR *        szConnStrIn,    /* input connection string */
  724.     SQLSMALLINT            cbConnStrIn,
  725.     SQLCHAR ODBCFAR *        szConnStrOut,
  726.     SQLSMALLINT            cbConnStrOutMax,
  727.     SQLSMALLINT ODBCFAR *    pcbConnStrOut );
  728.  
  729. #if (ODBCVER >= 0x0200)
  730. SQLRETURN ODBC_API SQLDrivers(
  731.     SQLHENV            henv,
  732.     SQLUSMALLINT        fDirection,
  733.     SQLCHAR ODBCFAR *        szDriverDesc,
  734.     SQLSMALLINT            cbDriverDescMax,
  735.     SQLSMALLINT ODBCFAR *    pcbDriverDesc,
  736.     SQLCHAR ODBCFAR *        szDriverAttributes,
  737.     SQLSMALLINT            cbDrvrAttrMax,
  738.     SQLSMALLINT ODBCFAR *    pcbDrvrAttr );
  739. #endif /* ODBCVER >= 0x0200 */
  740.  
  741. enum enumSQLOption {
  742.     /* Statement attribtues (can also be used with connections) */
  743.     SQL_QUERY_TIMEOUT,
  744.     SQL_MAX_ROWS,
  745.     SQL_NOSCAN,
  746.     SQL_MAX_LENGTH,
  747.     SQL_ASYNC_ENABLE,
  748.     SQL_BIND_TYPE,
  749.     #if (ODBCVER >= 0x0200)
  750.     SQL_CURSOR_TYPE,
  751.     SQL_CONCURRENCY,
  752.     SQL_KEYSET_SIZE,
  753.     SQL_ROWSET_SIZE,
  754.     SQL_SIMULATE_CURSOR,
  755.     SQL_RETRIEVE_DATA,
  756.     SQL_USE_BOOKMARKS,
  757.     SQL_GET_BOOKMARK,        /* GetStmtOption only */
  758.     SQL_ROW_NUMBER,        /* GetStmtOption only */
  759.     #if (ODBCVER >= 0x0300)
  760.     SQL_ATTR_ENABLE_AUTO_IPD,
  761.     SQL_ATTR_FETCH_BOOKMARK_PTR,
  762.     SQL_ATTR_PARAM_BIND_OFFSET_PTR,
  763.     SQL_ATTR_PARAM_BIND_TYPE,
  764.     SQL_ATTR_PARAM_OPERATION_PTR,
  765.     SQL_ATTR_PARAM_STATUS_PTR,
  766.     SQL_ATTR_PARAMS_PROCESSED_PTR,
  767.     SQL_ATTR_PARAMSET_SIZE,
  768.     SQL_ATTR_ROW_BIND_OFFSET_PTR,
  769.     SQL_ATTR_ROW_OPERATION_PTR,
  770.     SQL_ATTR_ROW_STATUS_PTR,
  771.     SQL_ATTR_ROWS_FETCHED_PTR,
  772.     SQL_ATTR_ROW_ARRAY_SIZE,
  773.     SQL_ATTR_CURSOR_SENSITIVITY    = -2,
  774.     SQL_ATTR_CURSOR_SCROLLABLE,
  775.     SQL_ATTR_METADATA_ID    = 10014,
  776.     #endif /* ODBCVER >= 0x0300 */
  777.     #endif /* ODBCVER >= 0x0200 */
  778.  
  779.     /* Environment attributes */
  780.     #if (ODBCVER >= 0x0300)
  781.     SQL_ATTR_ODBC_VERSION    = 200,
  782.     SQL_ATTR_CONNECTION_POOLING = 201,
  783.     SQL_ATTR_CP_MATCH           = 202,
  784.     SQL_ATTR_OUTPUT_NTS        = 10001,
  785.     #endif /* ODBCVER >= 0x0300 */
  786.  
  787.     /* Connect attribtues */
  788.     SQL_ACCESS_MODE    = 101,
  789.     SQL_AUTOCOMMIT,
  790.     SQL_LOGIN_TIMEOUT,
  791.     SQL_OPT_TRACE,
  792.     SQL_OPT_TRACEFILE,
  793.     SQL_TRANSLATE_DLL,
  794.     SQL_TRANSLATE_OPTION,
  795.     SQL_TXN_ISOLATION,        /* enumSQLIsolation */
  796.     SQL_CURRENT_QUALIFIER,
  797.     #if (ODBCVER >= 0x0200)
  798.     SQL_ODBC_CURSORS,
  799.     SQL_QUIET_MODE,
  800.     SQL_PACKET_SIZE,
  801.     #if (ODBCVER >= 0x0300)
  802.     SQL_ATTR_CONNECTION_TIMEOUT,
  803.     SQL_ATTR_DISCONNECT_BEHAVIOUR,
  804.     #endif /* ODBCVER >= 0x0300 */
  805.     #endif /* ODBCVER >= 0x0200 */
  806.  
  807.     #if (ODBCVER < 0x0300)
  808.     /* Driver specific attribtues -- not meaningful for ODBC 3.0 driver */
  809.     SQL_CONNECT_OPT_DRVR_START = 1000
  810.     #else
  811.     SQL_ATTR_ENLIST_IN_DTC    = 1207,
  812.     SQL_ATTR_ENLIST_IN_XA
  813.     #endif /* ODBCVER < 0x0300 */
  814. };
  815.  
  816. #if (ODBCVER >= 0x0300)
  817. /* Statement Attributes */
  818. #define SQL_ATTR_ASYNC_ENABLE        SQL_ASYNC_ENABLE
  819. #define SQL_ATTR_CONCURRENCY        SQL_CONCURRENCY
  820. #define SQL_ATTR_CURSOR_TYPE        SQL_CURSOR_TYPE
  821. #define SQL_ATTR_KEYSET_SIZE        SQL_KEYSET_SIZE
  822. #define SQL_ATTR_MAX_LENGTH        SQL_MAX_LENGTH
  823. #define SQL_ATTR_MAX_ROWS        SQL_MAX_ROWS
  824. #define SQL_ATTR_NOSCAN            SQL_NOSCAN
  825. #define SQL_ATTR_QUERY_TIMEOUT        SQL_QUERY_TIMEOUT
  826. #define SQL_ATTR_RETRIEVE_DATA        SQL_RETRIEVE_DATA
  827. #define    SQL_ATTR_ROW_BIND_TYPE        SQL_BIND_TYPE
  828. #define SQL_ATTR_ROW_NUMBER        SQL_ROW_NUMBER    /* GetStmtAttr */
  829. #define SQL_ATTR_SIMULATE_CURSOR    SQL_SIMULATE_CURSOR
  830. #define SQL_ATTR_USE_BOOKMARKS        SQL_USE_BOOKMARKS    
  831.  
  832. /* Connction attributes */
  833. #define SQL_ATTR_ACCESS_MODE        SQL_ACCESS_MODE
  834. #define SQL_ATTR_AUTOCOMMIT        SQL_AUTOCOMMIT
  835. #define SQL_ATTR_CURRENT_CATALOG    SQL_CURRENT_QUALIFIER
  836. #define SQL_ATTR_LOGIN_TIMEOUT        SQL_LOGIN_TIMEOUT
  837. #define SQL_ATTR_ODBC_CURSORS        SQL_ODBC_CURSORS
  838. #define SQL_ATTR_PACKET_SIZE        SQL_PACKET_SIZE
  839. #define SQL_ATTR_QUIET_MODE        SQL_QUIET_MODE
  840. #define SQL_ATTR_TRACE            SQL_OPT_TRACE
  841. #define SQL_ATTR_TRACEFILE        SQL_OPT_TRACEFILE
  842. #define SQL_ATTR_TRANSLATE_LIB        SQL_TRANSLATE_DLL
  843. #define SQL_ATTR_TRANSLATE_OPTION    SQL_TRANSLATE_OPTION
  844. #define SQL_ATTR_TXN_ISOLATION        SQL_TXN_ISOLATION
  845.  
  846. /* Type of attribute */
  847. enum enumAttrType {
  848.     SQL_IS_SMALLINT    = -8,
  849.     SQL_IS_USMALLINT,
  850.     SQL_IS_INTEGER,
  851.     SQL_IS_UINTEGER,
  852.     SQL_IS_POINTER
  853. };
  854. #endif /* ODBCVER >= 0x0300 */
  855.  
  856. #if (ODBCVER < 0x0300)
  857. /* Statement attributes */
  858. #define SQL_STMT_OPT_MAX        SQL_ROW_NUMBER
  859. #define SQL_STMT_OPT_MIN        SQL_QUERY_TIMEOUT
  860.  
  861. /* Connection attributes */
  862. #define SQL_CONN_OPT_MAX        SQL_PACKET_SIZE
  863. #define SQL_CONN_OPT_MIN        SQL_ACCESS_MODE
  864. #endif /* ODBCVER < 0x0300 */
  865.  
  866. enum enumSQLIsolation {
  867.     SQL_TXN_READ_UNCOMMITTED    = 0x00000001L,
  868.     SQL_TXN_READ_COMMITTED    = 0x00000002L,
  869.     SQL_TXN_REPEATABLE_READ    = 0x00000004L,
  870.     SQL_TXN_SERIALIZABLE    = 0x00000008L
  871.     /* SQL_TXN_VERSIONING    = 0x00000010L No longer suported */
  872. };
  873.  
  874. #define SQL_TRANSACTION_READ_UNCOMMITED    SQL_TXN_READ_UNCOMMITTED
  875. #define SQL_TRANSACTION_READ_COMMITTED    SQL_TXN_READ_COMMITTED
  876. #define SQL_TRANSACTION_REPEATABLE_READ    SQL_TXN_REPEATABLE_READ
  877. #define SQL_TRANSACTION_SERIALIZABLE    SQL_TXN_SERIALIZABLE
  878.  
  879. enum enumNoScanOps {
  880.     SQL_NOSCAN_OFF        = 0UL,
  881.     SQL_NOSCAN_ON        = 1UL
  882. };
  883.  
  884. enum enumAsyncEnable {
  885.     SQL_ASYNC_ENABLE_OFF,
  886.     SQL_ASYNC_ENABLE_ON    
  887. };
  888.  
  889. enum enumAutoCommit {
  890.     SQL_AUTOCOMMIT_OFF        = 0UL,
  891.     SQL_AUTOCOMMIT_ON        = 1UL
  892. };
  893.  
  894. enum enumTraceOpt {
  895.     SQL_OPT_TRACE_OFF        = 0UL,
  896.     SQL_OPT_TRACE_ON        = 1UL
  897. };
  898.  
  899. #if (ODBCVER >= 0x0200)
  900.  
  901. enum enumODBCCursors {
  902.     SQL_CUR_USE_IF_NEEDED    = 0UL,
  903.     SQL_CUR_USE_ODBC        = 1UL,
  904.     SQL_CUR_USE_DRIVER        = 2UL
  905. };
  906.  
  907. #define SQL_CUR_DEFAULT         SQL_CUR_USE_DRIVER
  908.  
  909. #endif /* ODBCVER >= 0x0200 */
  910.  
  911. #if (ODBCVER >= 0x0300)
  912. enum enumSQLConnectAttr {
  913.     SQL_ATTR_AUTO_IPD        = 10001
  914. //    SQL_ATTR_METADATA_ID    = 10014
  915. };
  916. #endif /* ODBCVER >= 0x0300 */
  917.  
  918. /* Special values for certain options  */
  919. #define SQL_QUERY_TIMEOUT_DEFAULT    0UL
  920. #define SQL_NOSCAN_DEFAULT        SQL_NOSCAN_OFF
  921. #define SQL_ASYNC_ENABLE_DEFAULT    SQL_ASYNC_ENABLE_OFF
  922. #define SQL_MAX_ROWS_DEFAULT        0UL
  923. #define SQL_MAX_LENGTH_DEFAULT        0UL
  924. #define SQL_BIND_BY_COLUMN         0UL
  925. #define SQL_BIND_TYPE_DEFAULT        SQL_BIND_BY_COLUMN
  926. #if (ODBCVER >= 0x0300)
  927. #define SQL_PARAM_BIND_BY_COLUMN    0UL
  928. #define SQL_PARAM_BIND_TYPE_DEFAULT    SQL_PARAM_BIND_BY_COLUMN
  929. #endif  /* ODBCVER >= 0x0300 */
  930. #define SQL_MODE_DEFAULT        SQL_MODE_READ_WRITE
  931. #define SQL_AUTOCOMMIT_DEFAULT         SQL_AUTOCOMMIT_ON
  932. #define SQL_LOGIN_TIMEOUT_DEFAULT    15UL
  933. #define SQL_OPT_TRACE_DEFAULT         SQL_OPT_TRACE_OFF
  934. #define SQL_OPT_TRACE_FILE_DEFAULT    "\\SQL.LOG"
  935.  
  936. #if (ODBCVER >= 0x0300)
  937. SQLRETURN ODBC_API SQLGetConnectAttr(
  938.     SQLHDBC            ConnectionHandle,
  939.     SQLINTEGER            Attribute,
  940.     SQLPOINTER            Value,
  941.     SQLINTEGER            BufferLength,
  942.     SQLINTEGER ODBCFAR *    StringLength );
  943. #endif /* ODBCVER >= 0x0300 */
  944.  
  945. SQLRETURN ODBC_API SQLGetConnectOption(    /* Level 1 */
  946.     SQLHDBC        ConnectionHandle,
  947.     SQLUSMALLINT    Option,        /* enumSQLOption */
  948.     SQLPOINTER        Value );
  949.  
  950. #if (ODBCVER >= 0x0300)
  951. SQLRETURN ODBC_API SQLSetConnectAttr(
  952.     SQLHDBC        ConnectionHandle,
  953.     SQLINTEGER        Attribute,
  954.     SQLPOINTER        Value,
  955.     SQLINTEGER        StringLength );
  956. #endif /* ODBCVER >= 0x0300 */
  957.  
  958. SQLRETURN ODBC_API SQLSetConnectOption(    /* Level 1 */
  959.     SQLHDBC        hdbc,
  960.     SQLUSMALLINT    Option,        /* enumSQLOption */
  961.     SQLUINTEGER        Value );
  962.  
  963. SQLRETURN ODBC_API SQLNativeSql(    /* Level 2 */
  964.     SQLHDBC            hdbc,
  965.     SQLCHAR ODBCFAR *        szSqlStrIn,
  966.     SQLINTEGER            cbSqlStrIn,
  967.     SQLCHAR ODBCFAR *        szSqlStr,
  968.     SQLINTEGER            cbSqlStrMax,
  969.     SQLINTEGER ODBCFAR *    pcbSqlStr );
  970.  
  971. enum enumSQLEndTran {
  972.     SQL_COMMIT,
  973.     SQL_ROLLBACK
  974. };
  975.  
  976. #if (ODBCVER >= 0x0300)
  977. SQLRETURN ODBC_API SQLEndTran(
  978.     SQLSMALLINT        HandleType,
  979.     SQLHANDLE        Handle,
  980.     SQLSMALLINT        CompletionType );
  981. #endif /* ODBCVER >= 0x0300 */
  982.  
  983. SQLRETURN ODBC_API SQLTransact(            /* CORE */
  984.     SQLHENV        EnvironmentHandle,
  985.     SQLHDBC        ConnectionHandle,
  986.     SQLUSMALLINT    CompletionType );    /* enumSQLEndTran */
  987.  
  988. #if (ODBCVER >= 0x0300)
  989. enum enumDisconnectBehaviour {
  990.     SQL_DB_RETURN_TO_POOL    = 0UL,
  991.     SQL_DB_DISCONNECT        = 1UL
  992. };
  993. #define SQL_DB_DEFAULT        SQL_DB_RETURN_TO_POOL
  994.  
  995. #define SQL_DTC_DONE        0L
  996. #endif /* ODBCVER >= 0x0300 */
  997.  
  998. SQLRETURN ODBC_API SQLDisconnect(    /* CORE */
  999.     SQLHDBC        ConnectionHandle );
  1000.  
  1001. SQLRETURN ODBC_API SQLFreeConnect(    /* CORE */
  1002.     SQLHDBC        ConnectionHandle );
  1003.  
  1004. /* API functions -- driver information */
  1005.  
  1006. enum enumSQLFunctions {
  1007.     /* CORE functions */
  1008.     SQL_API_SQLALLOCCONNECT    = 1,
  1009.     SQL_API_SQLALLOCENV,
  1010.     SQL_API_SQLALLOCSTMT,
  1011.     SQL_API_SQLBINDCOL,
  1012.     SQL_API_SQLCANCEL,
  1013.     SQL_API_SQLCOLATTRIBUTES,
  1014.     #if (ODBCVER >= 0x0300)
  1015.     SQL_API_SQLCOLATTRIBUTE    = 6,
  1016.     #endif /* ODBCVER >= 0x0300 */
  1017.     SQL_API_SQLCONNECT,
  1018.     SQL_API_SQLDESCRIBECOL,
  1019.     SQL_API_SQLDISCONNECT,
  1020.     SQL_API_SQLERROR,
  1021.     SQL_API_SQLEXECDIRECT,
  1022.     SQL_API_SQLEXECUTE,
  1023.     SQL_API_SQLFETCH,
  1024.     SQL_API_SQLFREECONNECT,
  1025.     SQL_API_SQLFREEENV,
  1026.     SQL_API_SQLFREESTMT,
  1027.     SQL_API_SQLGETCURSORNAME,
  1028.     SQL_API_SQLNUMRESULTCOLS,
  1029.     SQL_API_SQLPREPARE,
  1030.     SQL_API_SQLROWCOUNT,
  1031.     SQL_API_SQLSETCURSORNAME,
  1032.     SQL_API_SQLSETPARAM,
  1033.     SQL_API_SQLTRANSACT,
  1034.     #if (ODBCVER >= 0x0300)
  1035.     SQL_API_SQLBULKOPERATIONS,
  1036.     #endif /* ODBCVER >= 0x0300 */
  1037.  
  1038.     /* Level 1 functions */
  1039.     SQL_API_SQLCOLUMNS    = 40,
  1040.     SQL_API_SQLDRIVERCONNECT,
  1041.     SQL_API_SQLGETCONNECTOPTION,
  1042.     SQL_API_SQLGETDATA,
  1043.     SQL_API_SQLGETFUNCTIONS,
  1044.     SQL_API_SQLGETINFO,
  1045.     SQL_API_SQLGETSTMTOPTION,
  1046.     SQL_API_SQLGETTYPEINFO,
  1047.     SQL_API_SQLPARAMDATA,
  1048.     SQL_API_SQLPUTDATA,
  1049.     SQL_API_SQLSETCONNECTOPTION,
  1050.     SQL_API_SQLSETSTMTOPTION,
  1051.     SQL_API_SQLSPECIALCOLUMNS,
  1052.     SQL_API_SQLSTATISTICS,
  1053.     SQL_API_SQLTABLES,
  1054.  
  1055.     /* Level 2 functions */
  1056.     SQL_API_SQLBROWSECONNECT,
  1057.     SQL_API_SQLCOLUMNPRIVILEGES,
  1058.     SQL_API_SQLDATASOURCES,
  1059.     SQL_API_SQLDESCRIBEPARAM,
  1060.     SQL_API_SQLEXTENDEDFETCH,
  1061.     SQL_API_SQLFOREIGNKEYS,
  1062.     SQL_API_SQLMORERESULTS,
  1063.     SQL_API_SQLNATIVESQL,
  1064.     SQL_API_SQLNUMPARAMS,
  1065.     SQL_API_SQLPARAMOPTIONS,
  1066.     SQL_API_SQLPRIMARYKEYS,
  1067.     SQL_API_SQLPROCEDURECOLUMNS,
  1068.     SQL_API_SQLPROCEDURES,
  1069.     SQL_API_SQLSETPOS,
  1070.     SQL_API_SQLSETSCROLLOPTIONS,
  1071.     SQL_API_SQLTABLEPRIVILEGES
  1072.     #if (ODBCVER >= 0x0200)
  1073. ,   SQL_API_SQLDRIVERS,
  1074.     SQL_API_SQLBINDPARAMETER
  1075.     #endif /* ODBCVER >= 0x0200 */
  1076.     #if (ODBCVER >= 0x0300)
  1077. ,   SQL_API_SQLALLOCHANDLESTD,
  1078.  
  1079.     SQL_API_SQLALLOCHANDLE    = 1001,
  1080.     SQL_API_SQLBINDPARAM,
  1081.     SQL_API_SQLCLOSECURSOR,
  1082.     SQL_API_SQLCOPYDESC,
  1083.     SQL_API_SQLENDTRAN,
  1084.     SQL_API_SQLFREEHANDLE,
  1085.     SQL_API_SQLGETCONNECTATTR,
  1086.     SQL_API_SQLGETDESCFIELD,
  1087.     SQL_API_SQLGETDESCREC,
  1088.     SQL_API_SQLGETDIAGFIELD,
  1089.     SQL_API_SQLGETDIAGREC,
  1090.     SQL_API_SQLGETENVATTR,
  1091.     SQL_API_SQLGETSTMTATTR    = 1014,
  1092.     SQL_API_SQLSETCONNECTATTR    = 1016,
  1093.     SQL_API_SQLSETDESCFIELD,
  1094.     SQL_API_SQLSETDESCREC,
  1095.     SQL_API_SQLSETENVATTR,
  1096.     SQL_API_SQLSETSTMTATTR,
  1097.     SQL_API_SQLFETCHSCROLL
  1098.     #endif /* ODBCVER >= 0x0300 */
  1099. };
  1100.  
  1101. /* SQL_EXT_API_LAST --------------------------------------------------- */
  1102. /* Not useful with ODBC 3.0 since X/Open values > 10000.  Must contact  */
  1103. /* X/Open directly to get a range of numbers for driver-specific values */
  1104. /* -------------------------------------------------------------------- */
  1105. #if (ODBCVER < 0x0300)
  1106. #define SQL_NUM_FUNCTIONS    SQL_API_SQLTRANSACT        /* 23 */
  1107. #define SQL_EXT_API_LAST    SQL_API_SQLBINDPARAMETER
  1108. #define SQL_EXT_API_START    SQL_API_SQLCOLUMNS        /* 40 */
  1109. #define SQL_NUM_EXTENSIONS    (SQL_EXT_API_LAST - SQL_EXT_API_START + 1)
  1110. #endif /* ODBCVER < 0x0300 */
  1111.  
  1112. /* SQL_API_ALL_FUNCTIONS ---------------------------------------------- */
  1113. /* Only functions defined in ODBC version 2.0 and earlier are returned. */
  1114. /* X/Open functions break this scheme--see SQL_API_ODBC3_ALL_FUNCTIONS  */
  1115. /* -------------------------------------------------------------------- */
  1116. #define SQL_API_ALL_FUNCTIONS    0
  1117.  
  1118. /* SQL_API_LOADBYORDINAL ---------------------------------------------- */
  1119. /* 2.x drivers export a dummy function to speed up loading under        */
  1120. /* Windows.  Not supported in ODBC 3.0 and above.                       */
  1121. /* -------------------------------------------------------------------- */
  1122. #define SQL_API_LOADBYORDINAL    199
  1123.  
  1124. /* SQL_API_ODBC3_ALL_FUNCTIONS ---------------------------------------- */
  1125. /* Returns a bitmap, which handles higher values.  Use SQL_FUNC_EXIST() */
  1126. /* to determine if the function exists.                                 */
  1127. /* -------------------------------------------------------------------- */
  1128. #if (ODBCVER >= 0x0300)
  1129. #define SQL_API_ODBC3_ALL_FUNCTIONS        999
  1130. #define    SQL_API_ODBC3_ALL_FUNCTIONS_SIZE    250
  1131. #define SQL_FUNC_EXISTS(pfExists, uwAPI) \
  1132.     ( (*( ((UWORD*) (pfExists)) + ((uwAPI) >> 4) ) \
  1133.     & (1 << ((uwAPI) & 0x000F))) ? SQL_TRUE : SQL_FALSE )
  1134. #endif /* ODBCVER >= 0x0300 */
  1135.  
  1136. SQLRETURN ODBC_API SQLGetFunctions(    /* Level 1 */
  1137.     SQLHDBC            ConnectionHandle,
  1138.     SQLUSMALLINT        FunctionId,    /* enumSQLFuntions */
  1139.     SQLUSMALLINT ODBCFAR *    Supported );    /* TRUE or FALSE */
  1140.  
  1141. enum enumSQLFetchDirection {
  1142.     SQL_FD_FETCH_NEXT        = 0x00000001L,
  1143.     SQL_FD_FETCH_FIRST        = 0x00000002L,
  1144.     SQL_FD_FETCH_LAST        = 0x00000004L,
  1145.     SQL_FD_FETCH_PRIOR        = 0x00000008L,
  1146.     SQL_FD_FETCH_ABSOLUTE    = 0x00000010L,
  1147.     SQL_FD_FETCH_RELATIVE    = 0x00000020L,
  1148.     /* SQL_FD_FETCH_RESUME    = 0x00000040L, SQL_FETCH_RESUME no longer supported */
  1149.     SQL_FD_FETCH_BOOKMARK    = 0x00000080L
  1150. };
  1151.  
  1152. #define SQL_FD_FETCH_PREV    SQL_FD_FETCH_PRIOR
  1153.  
  1154. enum enumSQLConcurMask {
  1155.     SQL_SCCO_READ_ONLY        = 0x0000001L,
  1156.     SQL_SCCO_LOCK        = 0x0000002L,
  1157.     SQL_SCCO_OPT_ROWVER        = 0x0000004L,
  1158.     SQL_SCCO_OPT_VALUES        = 0x0000008L
  1159. };
  1160.  
  1161. #define SQL_SCCO_OPT_TIMESTAMP    SQL_SCCO_OPT_ROWVER
  1162.  
  1163. enum enumSQLScrollOptions {
  1164.     SQL_SO_FORWARD_ONLY        = 0x00000001L,
  1165.     SQL_SO_KEYSET_DRIVEN    = 0x00000002L,
  1166.     SQL_SO_DYNAMIC        = 0x00000004L,
  1167.     SQL_SO_MIXED        = 0x00000008L
  1168. #if (ODBCVER >= 0x0200)
  1169.     ,
  1170.     SQL_SO_STATIC        = 0x00000010L
  1171. #endif /* ODBCVER >= 0x0200 */
  1172. };
  1173.  
  1174. enum enumODBCAPIConform {
  1175.     SQL_OAC_NONE        = 0x0000,
  1176.     SQL_OAC_LEVEL1        = 0x0001,
  1177.     SQL_OAC_LEVEL2        = 0x0002
  1178. };
  1179.  
  1180. enum enumCliSagConform {
  1181.     SQL_OSCC_NOT_COMPLIANT    = 0x0000,
  1182.     SQL_OSCC_COMPLIANT        = 0x0001
  1183. };
  1184.  
  1185. enum enumODBCSQLConform {
  1186.     SQL_OSC_MINIMUM    = 0x0000,
  1187.     SQL_OSC_CORE    = 0x0001,
  1188.     SQL_OSC_EXTENDED    = 0x0002
  1189. };
  1190.  
  1191. enum enumConcatNullBehavior {
  1192.     SQL_CB_NULL        = 0x0000,
  1193.     SQL_CB_NON_NULL    = 0x0001
  1194. };
  1195.  
  1196. enum enumCursorCommitBehavior {
  1197.     SQL_CB_DELETE,
  1198.     SQL_CB_CLOSE,
  1199.     SQL_CB_PRESERVE
  1200. };
  1201.  
  1202. #define SQL_CC_DELETE    SQL_CB_DELETE
  1203. #define SQL_CR_DELETE    SQL_CB_DELETE
  1204. #define SQL_CC_CLOSE    SQL_CB_CLOSE
  1205. #define SQL_CR_CLOSE    SQL_CB_CLOSE
  1206. #define SQL_CC_PRESERVE    SQL_CB_PRESERVE
  1207. #define SQL_CR_PRESERVE    SQL_CB_PRESERVE
  1208.  
  1209. /* Cursor bitmasks */
  1210.  
  1211. #if (ODBCVER >= 0x0300)
  1212. enum enumCAFetchOrientation {
  1213.     SQL_CA1_NEXT    = 0x00000001L,
  1214.     SQL_CA1_ABSOLUTE    = 0x00000002L,
  1215.     SQL_CA1_RELATIVE    = 0x00000004L,
  1216.     SQL_CA1_BOOKMARK    = 0x00000008L
  1217. };
  1218.  
  1219. enum enumCALockTypes {
  1220.     SQL_CA1_LOCK_NO_CHANGE    = 0x00000040L,
  1221.     SQL_CA1_LOCK_EXCLUSIVE    = 0x00000080L,
  1222.     SQL_CA1_LOCK_UNLOCK        = 0x00000100L
  1223. };
  1224.  
  1225. enum enumCASetPos {
  1226.     SQL_CA1_POS_POSITION    = 0x00000200L,
  1227.     SQL_CA1_POS_UPDATE        = 0x00000400L,
  1228.     SQL_CA1_POS_DELETE        = 0x00000800L,
  1229.     SQL_CA1_POS_REFRESH        = 0x00001000L
  1230. };
  1231.  
  1232. enum enumCAPositioned {
  1233.     SQL_CA1_POSITIONED_UPDATE        = 0x00002000L,
  1234.     SQL_CA1_POSITIONED_DELETE        = 0x00004000L
  1235.     /* Enums are of type int: the rest can't be enums with 16 bit compilers */
  1236.     #define SQL_CA1_SELECT_FOR_UPDATE      0x00008000L
  1237. };
  1238.  
  1239. /* Enums are of type int: the rest can't be enums with 16 bit compilers */
  1240. #define SQL_CA1_BULK_ADD        0x00010000L
  1241. #define SQL_CA1_BULK_UPDATE_BY_BOOKMARK    0x00020000L
  1242. #define SQL_CA1_BULK_DELETE_BY_BOOKMARK    0x00040000L
  1243. #define SQL_CA1_BULK_FETCH_BY_BOOKMARK    0x00080000L
  1244.  
  1245. enum enumCAScrollConcurrency {
  1246.     SQL_CA2_READ_ONLY_CONCURRENCY    = 0x00000001L,
  1247.     SQL_CA2_LOCK_CONCURRENCY        = 0x00000002L,
  1248.     SQL_CA2_OPT_ROWVER_CONCURRENCY    = 0x00000004L,
  1249.     SQL_CA2_OPT_VALUES_CONCURRENCY    = 0x00000008L
  1250. };
  1251.  
  1252. enum enumCASensitivity {
  1253.     SQL_CA2_SENSITIVITY_ADDITIONS    = 0x00000010L,
  1254.     SQL_CA2_SENSITIVITY_DELETIONS    = 0x00000020L,
  1255.     SQL_CA2_SENSITIVITY_UPDATES        = 0x00000040L
  1256. };
  1257.  
  1258. enum enumCAMaxRows {
  1259.     SQL_CA2_MAX_ROWS_SELECT        = 0x00000080L,
  1260.     SQL_CA2_MAX_ROWS_INSERT        = 0x00000100L,
  1261.     SQL_CA2_MAX_ROWS_DELETE        = 0x00000200L,
  1262.     SQL_CA2_MAX_ROWS_UPDATE        = 0x00000400L,
  1263.     SQL_CA2_MAX_ROWS_CATALOG        = 0x00000800L
  1264.     /* We don't define enums in terms of enums values in the same enum type */
  1265.     #define SQL_CA2_MAX_ROWS_AFFECTS_ALL  (SQL_CA2_MAX_ROWS_SELECT | \
  1266.                        SQL_CA2_MAX_ROWS_INSERT | \
  1267.                        SQL_CA2_MAX_ROWS_DELETE | \
  1268.                        SQL_CA2_MAX_ROWS_UPDATE | \
  1269.                        SQL_CA2_MAX_ROWS_CATALOG)
  1270. };
  1271.  
  1272. enum enumCADiagCRC {
  1273.     SQL_CA2_CRC_EXACT        = 0x00001000L,
  1274.     SQL_CA2_CRC_APPROXIMATE    = 0x00002000L
  1275. };
  1276.  
  1277. enum enumCASim {
  1278.     SQL_CA2_SIMULATE_NON_UNIQUE        = 0x00004000L
  1279.     /* Enums are of type int: the rest can't be enums with 16 bit compilers */
  1280.     #define SQL_CA2_SIMULATE_TRY_UNIQUE      0x00008000L
  1281.     #define SQL_CA2_SIMULATE_UNIQUE      0x00010000L
  1282. };
  1283.  
  1284. #endif /* ODBCVER >= 0x0300 -- Cursor bitmasks */
  1285.  
  1286. enum enumIDCase {
  1287.     SQL_IC_UPPER    = 1,
  1288.     SQL_IC_LOWER,
  1289.     SQL_IC_SENSITIVE,
  1290.     SQL_IC_MIXED
  1291. };
  1292.  
  1293. enum enumTxnValues {
  1294.     SQL_TC_NONE,
  1295.     SQL_TC_DML,
  1296.     SQL_TC_ALL,
  1297.     SQL_TC_DDL_COMMIT,
  1298.     SQL_TC_DDL_IGNORE
  1299. };
  1300.  
  1301. enum enumCorrelationName {
  1302.     SQL_CN_NONE        = 0x0000,
  1303.     SQL_CN_DIFFERENT    = 0x0001,
  1304.     SQL_CN_ANY        = 0x0002
  1305. };
  1306.  
  1307. enum enumNonNullableCol {
  1308.     SQL_NNC_NULL    = 0x0000,
  1309.     SQL_NNC_NON_NULL    = 0x0001
  1310. };
  1311.  
  1312. #if (ODBCVER >= 0x0200)
  1313.  
  1314. enum enumNullCollation {
  1315.     SQL_NC_HIGH        = 0x0000,
  1316.     SQL_NC_LOW        = 0x0001,
  1317.     SQL_NC_START    = 0x0002,
  1318.     SQL_NC_END        = 0x0004
  1319. };
  1320.  
  1321. enum enumFileUsage {
  1322.     SQL_FILE_NOT_SUPPORTED    = 0x0000,
  1323.     SQL_FILE_TABLE        = 0x0001,
  1324.     SQL_FILE_QUALIFIER        = 0x0002
  1325. };
  1326. #define SQL_FILE_CATALOG    SQL_FILE_QUALIFIER
  1327.  
  1328. enum enumGetDataExtensions {
  1329.     SQL_GD_ANY_COLUMN        = 0x00000000L,
  1330.     SQL_GD_ANY_ORDER        = 0x00000001L,
  1331.     SQL_GD_BLOCK        = 0x00000004L,
  1332.     SQL_GD_BOUND        = 0x00000008L
  1333. };
  1334.  
  1335. enum enumAlterTable {
  1336.     SQL_AT_ADD_COLUMN                = 0x00000001L,
  1337.     SQL_AT_DROP_COLUMN                = 0x00000002L
  1338.     #if (ODBCVER >= 0x0300)
  1339.     ,
  1340.     SQL_AT_ADD_CONSTRAINT            = 0x00000008L,
  1341.     SQL_AT_ADD_COLUMN_SINGLE            = 0x00000020L,
  1342.     SQL_AT_ADD_COLUMN_DEFAULT            = 0x00000040L,
  1343.     SQL_AT_ADD_COLUMN_COLLATION            = 0x00000080L,
  1344.     SQL_AT_SET_COLUMN_DEFAULT            = 0x00000100L,
  1345.     SQL_AT_DROP_COLUMN_DEFAULT            = 0x00000200L,
  1346.     SQL_AT_DROP_COLUMN_CASCADE            = 0x00000400L,
  1347.     SQL_AT_DROP_COLUMN_RESTRICT            = 0x00000800L,
  1348.     SQL_AT_ADD_TABLE_CONSTRAINT            = 0x00001000L,
  1349.     SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE    = 0x00002000L,
  1350.     SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT    = 0x00004000L
  1351.     /* Enums are of type int: the rest can't be enums with 16 bit compilers */
  1352.     #define SQL_AT_CONSTRAINT_NAME_DEFINITION      0x00008000L
  1353.     #define SQL_AT_CONSTRAINT_INITIALLY_DEFERRED  0x00010000L
  1354.     #define SQL_AT_CONSTRAINT_INITIALLY_IMMEDIATE 0x00020000L
  1355.     #define SQL_AT_CONSTRAINT_DEFERRABLE      0x00040000L
  1356.     #define SQL_AT_CONSTRAINT_NON_DEFERRABLE      0x00080000L
  1357.     #endif /* ODBCVER >= 0x0300 */
  1358. };
  1359.  
  1360. enum enumPosStmts {
  1361.     SQL_PS_POSITIONED_DELETE    = 0x00000001L,
  1362.     SQL_PS_POSITIONED_UPDATE    = 0x00000002L,
  1363.     SQL_PS_SELECT_FOR_UPDATE    = 0x00000004L
  1364. };
  1365.  
  1366. enum enumGroupBy {
  1367.     SQL_GB_NOT_SUPPORTED        = 0x0000,
  1368.     SQL_GB_GROUP_BY_EQUALS_SELECT    = 0x0001,
  1369.     SQL_GB_GROUP_BY_CONTAINS_SELECT    = 0x0002,
  1370.     SQL_GB_NO_RELATION            = 0x0003
  1371.     #if (ODBCVER >= 0x0300)
  1372.     ,
  1373.     SQL_GB_COLLATE            = 0x0004
  1374.     #endif /* ODBCVER >= 0x0300 */
  1375. };
  1376.  
  1377. enum enumOwnerUsage {
  1378.     SQL_OU_DML_STATEMENTS    = 0x00000001L,
  1379.     SQL_OU_PROCEDURE_INVOCATION    = 0x00000002L,
  1380.     SQL_OU_TABLE_DEFINITION    = 0x00000004L,
  1381.     SQL_OU_INDEX_DEFINITION    = 0x00000008L,
  1382.     SQL_OU_PRIVILEGE_DEFINITION    = 0x00000010L
  1383. };
  1384.  
  1385. #if (ODBCVER >= 0x0300)
  1386. #define SQL_SU_DML_STATEMENTS            SQL_OU_DML_STATEMENTS 
  1387. #define SQL_SU_PROCEDURE_INVOCATION        SQL_OU_PROCEDURE_INVOCATION
  1388. #define SQL_SU_TABLE_DEFINITION            SQL_OU_TABLE_DEFINITION
  1389. #define SQL_SU_INDEX_DEFINITION            SQL_OU_INDEX_DEFINITION
  1390. #define SQL_SU_PRIVILEGE_DEFINITION        SQL_OU_PRIVILEGE_DEFINITION
  1391. #endif /* ODBCVER >= 0x0300 */
  1392.  
  1393. enum enumQualifierUsage {
  1394.     SQL_QU_DML_STATEMENTS    = 0x00000001L,
  1395.     SQL_QU_PROCEDURE_INVOCATION    = 0x00000002L,
  1396.     SQL_QU_TABLE_DEFINITION    = 0x00000004L,
  1397.     SQL_QU_INDEX_DEFINITION    = 0x00000008L,
  1398.     SQL_QU_PRIVILEGE_DEFINITION    = 0x00000010L
  1399. };
  1400.  
  1401. #if (ODBCVER >= 0x0300)
  1402. #define SQL_CU_DML_STATEMENTS            SQL_QU_DML_STATEMENTS
  1403. #define SQL_CU_PROCEDURE_INVOCATION        SQL_QU_PROCEDURE_INVOCATION 
  1404. #define SQL_CU_TABLE_DEFINITION            SQL_QU_TABLE_DEFINITION
  1405. #define SQL_CU_INDEX_DEFINITION            SQL_QU_INDEX_DEFINITION 
  1406. #define SQL_CU_PRIVILEGE_DEFINITION        SQL_QU_PRIVILEGE_DEFINITION 
  1407. #endif /* ODBCVER >= 0x0300 */
  1408.  
  1409. enum enumSubqueries {
  1410.     SQL_SQ_COMPARISON            = 0x00000001L,
  1411.     SQL_SQ_EXISTS            = 0x00000002L,
  1412.     SQL_SQ_IN                = 0x00000004L,
  1413.     SQL_SQ_QUANTIFIED            = 0x00000008L,
  1414.     SQL_SQ_CORRELATED_SUBQUERIES    = 0x00000010L
  1415. };
  1416.  
  1417. enum enumUnion {
  1418.     SQL_U_UNION        = 0x00000001L,
  1419.     SQL_U_UNION_ALL    = 0x00000002L
  1420. };
  1421.  
  1422. enum enumBookmark {
  1423.     SQL_BP_CLOSE    = 0x00000001L,
  1424.     SQL_BP_DELETE    = 0x00000002L,
  1425.     SQL_BP_DROP        = 0x00000004L,
  1426.     SQL_BP_TRANSACTION    = 0x00000008L,
  1427.     SQL_BP_UPDATE    = 0x00000010L,
  1428.     SQL_BP_OTHER_HSTMT    = 0x00000020L,
  1429.     SQL_BP_SCROLL    = 0x00000040L
  1430. };
  1431.  
  1432. enum enumStaticSensitivity {
  1433.     SQL_SS_ADDITIONS    = 0x00000001L,
  1434.     SQL_SS_DELETIONS    = 0x00000002L,
  1435.     SQL_SS_UPDATES    = 0x00000004L
  1436. };
  1437.  
  1438. enum enumView {
  1439.     SQL_CV_CREATE_VIEW    = 0x00000001L,
  1440.     SQL_CV_CHECK_OPTION    = 0x00000002L,
  1441.     SQL_CV_CASCADED    = 0x00000004L,
  1442.     SQL_CV_LOCAL    = 0x00000008L
  1443. };
  1444.  
  1445. enum enumLockTypes {
  1446.     SQL_LCK_NO_CHANGE    = 0x00000001L,
  1447.     SQL_LCK_EXCLUSIVE    = 0x00000002L,
  1448.     SQL_LCK_UNLOCK    = 0x00000004L
  1449. };
  1450.  
  1451. enum enumPosOps {
  1452.     SQL_POS_POSITION    = 0x00000001L,
  1453.     SQL_POS_REFRESH    = 0x00000002L,
  1454.     SQL_POS_UPDATE    = 0x00000004L,
  1455.     SQL_POS_DELETE    = 0x00000008L,
  1456.     SQL_POS_ADD        = 0x00000010L
  1457. };
  1458.  
  1459. enum enumQualifierLocation {
  1460.     SQL_QL_START    = 0x0001,
  1461.     SQL_QL_END        = 0x0002
  1462. };
  1463.  
  1464. #if (ODBCVER >= 0x0201)
  1465.  
  1466. enum enumOJCapabilities {
  1467.     SQL_OJ_LEFT            = 0x00000001L,
  1468.     SQL_OJ_RIGHT        = 0x00000002L,
  1469.     SQL_OJ_FULL            = 0x00000004L,
  1470.     SQL_OJ_NESTED        = 0x00000008L,
  1471.     SQL_OJ_NOT_ORDERED        = 0x00000010L,
  1472.     SQL_OJ_INNER        = 0x00000020L,
  1473.     SQL_OJ_ALL_COMPARISON_OPS    = 0x00000040L
  1474. };
  1475.  
  1476. #endif /* (ODBCVER >= 0x0201) */
  1477.  
  1478. #endif /* (ODBCVER >= 0x0200) */
  1479.  
  1480. #if (ODBCVER >= 0x0300)
  1481. enum enumAsyncMode {
  1482.     SQL_AM_NONE,
  1483.     SQL_AM_CONNECTION,
  1484.     SQL_AM_STATEMENT
  1485. };
  1486. #endif /* ODBCVER >= 0x0300 */
  1487.  
  1488. enum enumSQLConvertFunctions {
  1489.     SQL_FN_CVT_CONVERT        = 0x00000001L
  1490.     #if (ODBCVER >= 0x0300)
  1491.     ,
  1492.     SQL_FN_CVT_CAST        = 0x00000002L
  1493.     #endif /* ODBCVER >= 0x0300 */
  1494. };
  1495.  
  1496. enum enumSQLNumericFunctions {
  1497.     SQL_FN_NUM_ABS        = 0x00000001L,
  1498.     SQL_FN_NUM_ACOS        = 0x00000002L,
  1499.     SQL_FN_NUM_ASIN        = 0x00000004L,
  1500.     SQL_FN_NUM_ATAN        = 0x00000008L,
  1501.     SQL_FN_NUM_ATAN2        = 0x00000010L,
  1502.     SQL_FN_NUM_CEILING        = 0x00000020L,
  1503.     SQL_FN_NUM_COS        = 0x00000040L,
  1504.     SQL_FN_NUM_COT        = 0x00000080L,
  1505.     SQL_FN_NUM_EXP        = 0x00000100L,
  1506.     SQL_FN_NUM_FLOOR        = 0x00000200L,
  1507.     SQL_FN_NUM_LOG        = 0x00000400L,
  1508.     SQL_FN_NUM_MOD        = 0x00000800L,
  1509.     SQL_FN_NUM_SIGN        = 0x00001000L,
  1510.     SQL_FN_NUM_SIN        = 0x00002000L,
  1511.     SQL_FN_NUM_SQRT        = 0x00004000L
  1512.     /* Enums are of type int: the rest can't be enums with 16 bit compilers */
  1513.     #define SQL_FN_NUM_TAN      0x00008000L
  1514.     #define SQL_FN_NUM_PI      0x00010000L
  1515.     #define SQL_FN_NUM_RAND      0x00020000L
  1516.     #if (ODBCVER >= 0x0200)
  1517.     #define SQL_FN_NUM_DEGREES      0x00040000L
  1518.     #define SQL_FN_NUM_LOG10      0x00080000L
  1519.     #define SQL_FN_NUM_POWER      0x00100000L
  1520.     #define SQL_FN_NUM_RADIANS      0x00200000L
  1521.     #define SQL_FN_NUM_ROUND      0x00400000L
  1522.     #define SQL_FN_NUM_TRUNCATE      0x00800000L
  1523.     #endif /* ODBCVER >= 0x0200 */
  1524. };
  1525.  
  1526. #if (ODBCVER >= 0x0300)
  1527. enum enumSQL92NumericValueFunctions {
  1528.     SQL_SNVF_BIT_LENGTH        = 0x00000001L,
  1529.     SQL_SNVF_CHAR_LENGTH    = 0x00000002L,
  1530.     SQL_SNVF_CHARACTER_LENGTH    = 0x00000004L,
  1531.     SQL_SNVF_EXTRACT        = 0x00000008L,
  1532.     SQL_SNVF_OCTET_LENGTH    = 0x00000010L,
  1533.     SQL_SNVF_POSITION        = 0x00000020L
  1534. };
  1535. #endif /* ODBCVER >= 0x0300 */
  1536.  
  1537. enum enumSQLStringFunctions {
  1538.     SQL_FN_STR_CONCAT            = 0x00000001L,
  1539.     SQL_FN_STR_INSERT            = 0x00000002L,
  1540.     SQL_FN_STR_LEFT            = 0x00000004L,
  1541.     SQL_FN_STR_LTRIM            = 0x00000008L,
  1542.     SQL_FN_STR_LENGTH            = 0x00000010L,
  1543.     SQL_FN_STR_LOCATE            = 0x00000020L,
  1544.     SQL_FN_STR_LCASE            = 0x00000040L,
  1545.     SQL_FN_STR_REPEAT            = 0x00000080L,
  1546.     SQL_FN_STR_REPLACE            = 0x00000100L,
  1547.     SQL_FN_STR_RIGHT            = 0x00000200L,
  1548.     SQL_FN_STR_RTRIM            = 0x00000400L,
  1549.     SQL_FN_STR_SUBSTRING        = 0x00000800L,
  1550.     SQL_FN_STR_UCASE            = 0x00001000L,
  1551.     SQL_FN_STR_ASCII            = 0x00002000L,
  1552.     SQL_FN_STR_CHAR            = 0x00004000L
  1553.     #if (ODBCVER >= 0x0200)
  1554.     /* Enums are of type int: the rest can't be enums with 16 bit compilers */
  1555.     #define SQL_FN_STR_DIFFERENCE      0x00008000L
  1556.     #define SQL_FN_STR_LOCATE_2          0x00010000L
  1557.     #define SQL_FN_STR_SOUNDEX          0x00020000L
  1558.     #define SQL_FN_STR_SPACE          0x00040000L
  1559.     #if (ODBCVER >= 0x0300)
  1560.     #define SQL_FN_STR_BIT_LENGTH      0x00080000L
  1561.     #define SQL_FN_STR_CHAR_LENGTH      0x00100000L
  1562.     #define SQL_FN_STR_CHARACTER_LENGTH      0x00200000L
  1563.     #define SQL_FN_STR_OCTET_LENGTH      0x00400000L
  1564.     #define SQL_FN_STR_POSITION          0x00800000L
  1565.     #endif /* ODBCVER >= 0x0300 */
  1566.     #endif /* ODBCVER >= 0x0200 */
  1567. };
  1568.  
  1569. #if (ODBCVER >= 0x0300)
  1570. enum enumSQL92StringFunctions {
  1571.     SQL_SSF_CONVERT        = 0x00000001L,
  1572.     SQL_SSF_LOWER        = 0x00000002L,
  1573.     SQL_SSF_UPPER        = 0x00000004L,
  1574.     SQL_SSF_SUBSTRING        = 0x00000008L,
  1575.     SQL_SSF_TRANSLATE        = 0x00000010L,
  1576.     SQL_SSF_TRIM_BOTH        = 0x00000020L,
  1577.     SQL_SSF_TRIM_LEADING    = 0x00000040L,
  1578.     SQL_SSF_TRIM_TRAILING    = 0x00000080L
  1579. };
  1580. #endif /* ODBCVER >= 0x0300 */
  1581.  
  1582. enum enumSQLSystemFunctions {
  1583.     SQL_FN_SYS_USERNAME        = 0x00000001L,
  1584.     SQL_FN_SYS_DBNAME        = 0x00000002L,
  1585.     SQL_FN_SYS_IFNULL        = 0x00000004L
  1586. };
  1587.  
  1588. enum enumSQLTimedateFunctions {
  1589.     SQL_FN_TD_NOW            = 0x00000001L,
  1590.     SQL_FN_TD_CURDATE            = 0x00000002L,
  1591.     SQL_FN_TD_DAYOFMONTH        = 0x00000004L,
  1592.     SQL_FN_TD_DAYOFWEEK            = 0x00000008L,
  1593.     SQL_FN_TD_DAYOFYEAR            = 0x00000010L,
  1594.     SQL_FN_TD_MONTH            = 0x00000020L,
  1595.     SQL_FN_TD_QUARTER            = 0x00000040L,
  1596.     SQL_FN_TD_WEEK            = 0x00000080L,
  1597.     SQL_FN_TD_YEAR            = 0x00000100L,
  1598.     SQL_FN_TD_CURTIME            = 0x00000200L,
  1599.     SQL_FN_TD_HOUR            = 0x00000400L,
  1600.     SQL_FN_TD_MINUTE            = 0x00000800L,
  1601.     SQL_FN_TD_SECOND            = 0x00001000L
  1602.     #if (ODBCVER >= 0x0200)
  1603.     ,
  1604.     SQL_FN_TD_TIMESTAMPADD        = 0x00002000L,
  1605.     SQL_FN_TD_TIMESTAMPDIFF        = 0x00004000L
  1606.     /* Enums are of type int: the rest can't be enums with 16 bit compilers */
  1607.     #define SQL_FN_TD_DAYNAME          0x00008000L
  1608.     #define SQL_FN_TD_MONTHNAME          0x00010000L
  1609.     #if (ODBCVER >= 0x0300)
  1610.     #define SQL_FN_TD_CURRENT_DATE      0x00020000L
  1611.     #define SQL_FN_TD_CURRENT_TIME      0x00040000L
  1612.     #define SQL_FN_TD_CURRENT_TIMESTAMP      0x00080000L
  1613.     #define SQL_FN_TD_EXTRACT          0x00100000L
  1614.     #endif /* ODBCVER >= 0x0300 */
  1615.     #endif /* ODBCVER >= 0x0200 */
  1616. };
  1617.  
  1618. #if (ODBCVER >= 0x0300)
  1619. enum enumSQL92DateTimeFunctions {
  1620.     SQL_SDF_CURRENT_DATE    = 0x00000001L,
  1621.     SQL_SDF_CURRENT_TIME    = 0x00000002L,
  1622.     SQL_SDF_CURRENT_TIMESTAMP    = 0x00000004L
  1623. };
  1624. #endif /* ODBCVER >= 0x0300 */
  1625.  
  1626. enum enumSQLTSI {
  1627.     SQL_FN_TSI_FRAC_SECOND    = 0x00000001L,
  1628.     SQL_FN_TSI_SECOND        = 0x00000002L,
  1629.     SQL_FN_TSI_MINUTE        = 0x00000004L,
  1630.     SQL_FN_TSI_HOUR        = 0x00000008L,
  1631.     SQL_FN_TSI_DAY        = 0x00000010L,
  1632.     SQL_FN_TSI_WEEK        = 0x00000020L,
  1633.     SQL_FN_TSI_MONTH        = 0x00000040L,
  1634.     SQL_FN_TSI_QUARTER        = 0x00000080L,
  1635.     SQL_FN_TSI_YEAR        = 0x00000100L
  1636. };
  1637.  
  1638. enum enumSQLConvert {
  1639.     SQL_CVT_CHAR            = 0x00000001L,
  1640.     SQL_CVT_NUMERIC            = 0x00000002L,
  1641.     SQL_CVT_DECIMAL            = 0x00000004L,
  1642.     SQL_CVT_INTEGER            = 0x00000008L,
  1643.     SQL_CVT_SMALLINT            = 0x00000010L,
  1644.     SQL_CVT_FLOAT            = 0x00000020L,
  1645.     SQL_CVT_REAL            = 0x00000040L,
  1646.     SQL_CVT_DOUBLE            = 0x00000080L,
  1647.     SQL_CVT_VARCHAR            = 0x00000100L,
  1648.     SQL_CVT_LONGVARCHAR            = 0x00000200L,
  1649.     SQL_CVT_BINARY            = 0x00000400L,
  1650.     SQL_CVT_VARBINARY            = 0x00000800L,
  1651.     SQL_CVT_BIT                = 0x00001000L,
  1652.     SQL_CVT_TINYINT            = 0x00002000L,
  1653.     SQL_CVT_BIGINT            = 0x00004000L
  1654.     /* Enums are of type int: the rest can't be enums with 16 bit compilers */
  1655.     #define SQL_CVT_DATE          0x00008000L
  1656.     #define SQL_CVT_TIME          0x00010000L
  1657.     #define SQL_CVT_TIMESTAMP          0x00020000L
  1658.     #define SQL_CVT_LONGVARBINARY      0x00040000L
  1659.     #if (ODBCVER >= 0x0300)
  1660.     #define SQL_CVT_INTERVAL_YEAR_MONTH      0x00080000L
  1661.     #define SQL_CVT_INTERVAL_DAY_TIME      0x00100000L
  1662.     #define SQL_CVT_WCHAR          0x00200000L
  1663.     #define SQL_CVT_WLONGVARCHAR      0x00400000L
  1664.     #define SQL_CVT_WVARCHAR          0x00800000L
  1665.     #endif /* ODBCVER >= 0x0300 */
  1666. };
  1667.  
  1668. /* ODBC 3.0 SQLGetInfo return values */
  1669. #if (ODBCVER >= 0x0300)
  1670. enum enumAggregateFunctions {
  1671.     SQL_AF_AVG        = 0x00000001L,
  1672.     SQL_AF_COUNT    = 0x00000002L,
  1673.     SQL_AF_MAX        = 0x00000004L,
  1674.     SQL_AF_MIN        = 0x00000008L,
  1675.     SQL_AF_SUM        = 0x00000010L,
  1676.     SQL_AF_DISTINCT    = 0x00000020L
  1677.     /* We don't define enums in terms of enums values in the same enum type */
  1678.     #define SQL_AF_ALL      (SQL_AF_AVG | SQL_AF_COUNT | SQL_AF_MAX | \
  1679.                    SQL_AF_MIN | SQL_AF_SUM   | SQL_AF_DISTINCT)
  1680. };
  1681.  
  1682. enum enumSQLConformance {
  1683.     SQL_SC_SQL92_ENTRY            = 0x00000001L,
  1684.     SQL_SC_FIPS127_2_TRANSITIONAL    = 0x00000002L,
  1685.     SQL_SC_SQL92_INTERMEDIATE        = 0x00000004L,
  1686.     SQL_SC_SQL92_FULL            = 0x00000008L
  1687. };
  1688.  
  1689. enum enumDateTimeLiterals {
  1690.     SQL_DL_SQL92_DATE                    = 0x00000001L,
  1691.     SQL_DL_SQL92_TIME                    = 0x00000002L,
  1692.     SQL_DL_SQL92_TIMESTAMP                = 0x00000004L,
  1693.     SQL_DL_SQL92_INTERVAL_YEAR                = 0x00000008L,
  1694.     SQL_DL_SQL92_INTERVAL_MONTH                = 0x00000010L,
  1695.     SQL_DL_SQL92_INTERVAL_DAY                = 0x00000020L,
  1696.     SQL_DL_SQL92_INTERVAL_HOUR                = 0x00000040L,
  1697.     SQL_DL_SQL92_INTERVAL_MINUTE            = 0x00000080L,
  1698.     SQL_DL_SQL92_INTERVAL_SECOND            = 0x00000100L,
  1699.     SQL_DL_SQL92_INTERVAL_YEAR_TO_MONTH            = 0x00000200L,
  1700.     SQL_DL_SQL92_INTERVAL_DAY_TO_HOUR            = 0x00000400L,
  1701.     SQL_DL_SQL92_INTERVAL_DAY_TO_MINUTE            = 0x00000800L,
  1702.     SQL_DL_SQL92_INTERVAL_DAY_TO_SECOND            = 0x00001000L,
  1703.     SQL_DL_SQL92_INTERVAL_HOUR_TO_MINUTE        = 0x00002000L,
  1704.     SQL_DL_SQL92_INTERVAL_HOUR_TO_SECOND        = 0x00004000L
  1705.     /* Enums are of type int: the rest can't be enums with 16 bit compilers */
  1706.     #define SQL_DL_SQL92_INTERVAL_MINUTE_TO_SECOND      0x00008000L
  1707. };
  1708.  
  1709. #define SQL_CL_START    SQL_QL_START
  1710. #define SQL_CL_END    SQL_QL_END
  1711.  
  1712. enum enumBatchRowCount {
  1713.     SQL_BRC_PROCEDURES    = 0x0000001,
  1714.     SQL_BRC_EXPLICIT    = 0x0000002,
  1715.     SQL_BRC_ROLLED_UP    = 0x0000004
  1716. };
  1717.  
  1718. enum enumBatchSupport {
  1719.     SQL_BS_SELECT_EXPLICIT    = 0x00000001L,
  1720.     SQL_BS_ROW_COUNT_EXPLICIT    = 0x00000002L,
  1721.     SQL_BS_SELECT_PROC        = 0x00000004L,
  1722.     SQL_BS_ROW_COUNT_PROC    = 0x00000008L
  1723. };
  1724.  
  1725. enum enumParamArrayRC {
  1726.     SQL_PARC_BATCH    = 1,
  1727.     SQL_PARC_NO_BATCH
  1728. };
  1729.  
  1730. enum enumParamArraySB {
  1731.     SQL_PAS_BATCH    = 1,
  1732.     SQL_PAS_NO_BATCH,
  1733.     SQL_PAS_NO_SELECT
  1734. };
  1735.  
  1736. enum enumIndexKeywords {
  1737.     SQL_IK_NONE        = 0x00000000L,
  1738.     SQL_IK_ASC        = 0x00000001L,
  1739.     SQL_IK_DESC        = 0x00000002L
  1740.     /* We don't define enums in terms of enums values in the same enum type */
  1741.     #define SQL_IK_ALL      (SQL_IK_ASC | SQL_IK_DESC)
  1742. };
  1743.  
  1744. enum enumInfoSchemaViews {
  1745.     SQL_ISV_ASSERTIONS            = 0x00000001L,
  1746.     SQL_ISV_CHARACTER_SETS        = 0x00000002L,
  1747.     SQL_ISV_CHECK_CONSTRAINTS        = 0x00000004L,
  1748.     SQL_ISV_COLLATIONS            = 0x00000008L,
  1749.     SQL_ISV_COLUMN_DOMAIN_USAGE        = 0x00000010L,
  1750.     SQL_ISV_COLUMN_PRIVILEGES        = 0x00000020L,
  1751.     SQL_ISV_COLUMNS            = 0x00000040L,
  1752.     SQL_ISV_CONSTRAINT_COLUMN_USAGE    = 0x00000080L,
  1753.     SQL_ISV_CONSTRAINT_TABLE_USAGE    = 0x00000100L,
  1754.     SQL_ISV_DOMAIN_CONSTRAINTS        = 0x00000200L,
  1755.     SQL_ISV_DOMAINS            = 0x00000400L,
  1756.     SQL_ISV_KEY_COLUMN_USAGE        = 0x00000800L,
  1757.     SQL_ISV_REFERENTIAL_CONSTRAINTS    = 0x00001000L,
  1758.     SQL_ISV_SCHEMATA            = 0x00002000L,
  1759.     SQL_ISV_SQL_LANGUAGES        = 0x00004000L
  1760.     /* Enums are of type int: the rest can't be enums with 16 bit compilers */
  1761.     #define SQL_ISV_TABLE_CONSTRAINTS      0x00008000L
  1762.     #define SQL_ISV_TABLE_PRIVILEGES      0x00010000L
  1763.     #define SQL_ISV_TABLES          0x00020000L
  1764.     #define SQL_ISV_TRANSLATIONS      0x00040000L
  1765.     #define SQL_ISV_USAGE_PRIVILEGES      0x00080000L
  1766.     #define SQL_ISV_VIEW_COLUMN_USAGE      0x00100000L
  1767.     #define SQL_ISV_VIEW_TABLE_USAGE      0x00200000L
  1768.     #define SQL_ISV_VIEWS          0x00400000L
  1769. };
  1770.  
  1771. enum enumAlterDomain {
  1772.     SQL_AD_CONSTRAINT_NAME_DEFINITION        = 0x00000001L,
  1773.     SQL_AD_ADD_DOMAIN_CONSTRAINT        = 0x00000002L,
  1774.     SQL_AD_DROP_DOMAIN_CONSTRAINT        = 0x00000004L,
  1775.     SQL_AD_ADD_DOMAIN_DEFAULT              = 0x00000008L,
  1776.     SQL_AD_DROP_DOMAIN_DEFAULT          = 0x00000010L,
  1777.     SQL_AD_ADD_CONSTRAINT_INITIALLY_DEFERRED    = 0x00000020L,
  1778.     SQL_AD_ADD_CONSTRAINT_INITIALLY_IMMEDIATE    = 0x00000040L,
  1779.     SQL_AD_ADD_CONSTRAINT_DEFERRABLE        = 0x00000080L,
  1780.     SQL_AD_ADD_CONSTRAINT_NON_DEFERRABLE    = 0x00000100L
  1781. };
  1782.  
  1783. enum enumCreateSchema {
  1784.     SQL_CS_CREATE_SCHEMA        = 0x00000001L,
  1785.     SQL_CS_AUTHORIZATION        = 0x00000002L,
  1786.     SQL_CS_DEFAULT_CHARACTER_SET    = 0x00000004L
  1787. };
  1788.  
  1789. enum enumCreateTranslation {
  1790.     SQL_CTR_CREATE_TRANSLATION    = 0x00000001L
  1791. };
  1792.  
  1793. enum enumCreateAssertion {
  1794.     SQL_CA_CREATE_ASSERTION            = 0x00000001L,
  1795.     SQL_CA_CONSTRAINT_INITIALLY_DEFERRED    = 0x00000010L,
  1796.     SQL_CA_CONSTRAINT_INITIALLY_IMMEDIATE    = 0x00000020L,
  1797.     SQL_CA_CONSTRAINT_DEFERRABLE        = 0x00000040L,
  1798.     SQL_CA_CONSTRAINT_NON_DEFERRABLE        = 0x00000080L
  1799. };
  1800.  
  1801. enum enumCreateCharSet {
  1802.     SQL_CCS_CREATE_CHARACTER_SET    = 0x00000001L,
  1803.     SQL_CCS_COLLATE_CLAUSE        = 0x00000002L,
  1804.     SQL_CCS_LIMITED_COLLATION        = 0x00000004L
  1805. };
  1806.  
  1807. enum enumCreateCollation {
  1808.     SQL_CCOL_CREATE_COLLATION    = 0x00000001L
  1809. };
  1810.  
  1811. enum enumCreateDomain {
  1812.     SQL_CDO_CREATE_DOMAIN            = 0x00000001L,
  1813.     SQL_CDO_DEFAULT                = 0x00000002L,
  1814.     SQL_CDO_CONSTRAINT                = 0x00000004L,
  1815.     SQL_CDO_COLLATION                = 0x00000008L,
  1816.     SQL_CDO_CONSTRAINT_NAME_DEFINITION        = 0x00000010L,
  1817.     SQL_CDO_CONSTRAINT_INITIALLY_DEFERRED    = 0x00000020L,
  1818.     SQL_CDO_CONSTRAINT_INITIALLY_IMMEDIATE    = 0x00000040L,
  1819.     SQL_CDO_CONSTRAINT_DEFERRABLE        = 0x00000080L,
  1820.     SQL_CDO_CONSTRAINT_NON_DEFERRABLE        = 0x00000100L
  1821. };
  1822.  
  1823. enum enumCreateTable {
  1824.     SQL_CT_CREATE_TABLE                = 0x00000001L,
  1825.     SQL_CT_COMMIT_PRESERVE            = 0x00000002L,
  1826.     SQL_CT_COMMIT_DELETE            = 0x00000004L,
  1827.     SQL_CT_GLOBAL_TEMPORARY            = 0x00000008L,
  1828.     SQL_CT_LOCAL_TEMPORARY            = 0x00000010L,
  1829.     SQL_CT_CONSTRAINT_INITIALLY_DEFERRED    = 0x00000020L,
  1830.     SQL_CT_CONSTRAINT_INITIALLY_IMMEDIATE    = 0x00000040L,
  1831.     SQL_CT_CONSTRAINT_DEFERRABLE        = 0x00000080L,
  1832.     SQL_CT_CONSTRAINT_NON_DEFERRABLE        = 0x00000100L,
  1833.     SQL_CT_COLUMN_CONSTRAINT            = 0x00000200L,
  1834.     SQL_CT_COLUMN_DEFAULT            = 0x00000400L,
  1835.     SQL_CT_COLUMN_COLLATION            = 0x00000800L,
  1836.     SQL_CT_TABLE_CONSTRAINT            = 0x00001000L,
  1837.     SQL_CT_CONSTRAINT_NAME_DEFINITION        = 0x00002000L
  1838. };
  1839.  
  1840. enum enumDDLIndex {
  1841.     SQL_DI_CREATE_INDEX    = 0x00000001L,
  1842.     SQL_DI_DROP_INDEX    = 0x00000002L
  1843. };
  1844.  
  1845. enum enumDropCollation {
  1846.     SQL_DC_DROP_COLLATION    = 0x00000001L
  1847. };
  1848.  
  1849. enum enumDropDomain {
  1850.     SQL_DD_DROP_DOMAIN    = 0x00000001L,
  1851.     SQL_DD_RESTRICT    = 0x00000002L,
  1852.     SQL_DD_CASCADE    = 0x00000004L
  1853. };
  1854.  
  1855. enum enumDropSchema {
  1856.     SQL_DS_DROP_SCHEMA    = 0x00000001L,
  1857.     SQL_DS_RESTRICT    = 0x00000002L,
  1858.     SQL_DS_CASCADE    = 0x00000004L
  1859. };
  1860.  
  1861. enum enumDropCharSet {
  1862.     SQL_DCS_DROP_CHARACTER_SET    = 0x00000001L
  1863. };
  1864.  
  1865. enum enumDropAssertion {
  1866.     SQL_DA_DROP_ASSERTION    = 0x00000001L
  1867. };
  1868.  
  1869. enum enumDropTable {
  1870.     SQL_DT_DROP_TABLE    = 0x00000001L,
  1871.     SQL_DT_RESTRICT    = 0x00000002L,
  1872.     SQL_DT_CASCADE    = 0x00000004L
  1873. };
  1874.  
  1875. enum enumDropTranslation {
  1876.     SQL_DTR_DROP_TRANSLATION    = 0x00000001L
  1877. };
  1878.  
  1879. enum enumDropView {
  1880.     SQL_DV_DROP_VIEW    = 0x00000001L,
  1881.     SQL_DV_RESTRICT    = 0x00000002L,
  1882.     SQL_DV_CASCADE    = 0x00000004L
  1883. };
  1884.  
  1885. enum enumInsertStatement {
  1886.     SQL_IS_INSERT_LITERALS    = 0x00000001L,
  1887.     SQL_IS_INSERT_SEARCHED    = 0x00000002L,
  1888.     SQL_IS_SELECT_INTO        = 0x00000004L
  1889. };
  1890.  
  1891. enum enumODBCInterfaceConformance {
  1892.     SQL_OIC_CORE    = 1UL,
  1893.     SQL_OIC_LEVEL1    = 2UL,
  1894.     SQL_OIC_LEVEL2    = 3UL
  1895. };
  1896.  
  1897. enum enumSQL92ForeignKeyDelete {
  1898.     SQL_SFKD_CASCADE        = 0x00000001L,
  1899.     SQL_SFKD_NO_ACTION        = 0x00000002L,
  1900.     SQL_SFKD_SET_DEFAULT    = 0x00000004L,
  1901.     SQL_SFKD_SET_NULL        = 0x00000008L
  1902. };
  1903.  
  1904. enum enumSQL92ForeignKeyUpdate {
  1905.     SQL_SFKU_CASCADE        = 0x00000001L,
  1906.     SQL_SFKU_NO_ACTION        = 0x00000002L,
  1907.     SQL_SFKU_SET_DEFAULT    = 0x00000004L,
  1908.     SQL_SFKU_SET_NULL        = 0x00000008L
  1909. };
  1910.  
  1911. enum enumSQL92Grant {
  1912.     SQL_SG_USAGE_ON_DOMAIN        = 0x00000001L,
  1913.     SQL_SG_USAGE_ON_CHARACTER_SET    = 0x00000002L,
  1914.     SQL_SG_USAGE_ON_COLLATION        = 0x00000004L,
  1915.     SQL_SG_USAGE_ON_TRANSLATION        = 0x00000008L,
  1916.     SQL_SG_WITH_GRANT_OPTION        = 0x00000010L,
  1917.     SQL_SG_DELETE_TABLE            = 0x00000020L,
  1918.     SQL_SG_INSERT_TABLE            = 0x00000040L,
  1919.     SQL_SG_INSERT_COLUMN        = 0x00000080L,
  1920.     SQL_SG_REFERENCES_TABLE        = 0x00000100L,
  1921.     SQL_SG_REFERENCES_COLUMN        = 0x00000200L,
  1922.     SQL_SG_SELECT_TABLE            = 0x00000400L,
  1923.     SQL_SG_UPDATE_TABLE            = 0x00000800L,
  1924.     SQL_SG_UPDATE_COLUMN        = 0x00001000L
  1925. };
  1926.  
  1927. enum enumSQL92Predicates {
  1928.     SQL_SP_EXISTS            = 0x00000001L,
  1929.     SQL_SP_ISNOTNULL            = 0x00000002L,
  1930.     SQL_SP_ISNULL            = 0x00000004L,
  1931.     SQL_SP_MATCH_FULL            = 0x00000008L,
  1932.     SQL_SP_MATCH_PARTIAL        = 0x00000010L,
  1933.     SQL_SP_MATCH_UNIQUE_FULL        = 0x00000020L,
  1934.     SQL_SP_MATCH_UNIQUE_PARTIAL        = 0x00000040L,
  1935.     SQL_SP_OVERLAPS            = 0x00000080L,
  1936.     SQL_SP_UNIQUE            = 0x00000100L,
  1937.     SQL_SP_LIKE                = 0x00000200L,
  1938.     SQL_SP_IN                = 0x00000400L,
  1939.     SQL_SP_BETWEEN            = 0x00000800L,
  1940.     SQL_SP_COMPARISON            = 0x00001000L,
  1941.     SQL_SP_QUANTIFIED_COMPARISON    = 0x00002000L
  1942. };
  1943.  
  1944. enum enumSQL92RelationalJoinOps {
  1945.     SQL_SRJO_CORRESPONDING_CLAUSE    = 0x00000001L,
  1946.     SQL_SRJO_CROSS_JOIN            = 0x00000002L,
  1947.     SQL_SRJO_EXCEPT_JOIN        = 0x00000004L,
  1948.     SQL_SRJO_FULL_OUTER_JOIN        = 0x00000008L,
  1949.     SQL_SRJO_INNER_JOIN            = 0x00000010L,
  1950.     SQL_SRJO_INTERSECT_JOIN        = 0x00000020L,
  1951.     SQL_SRJO_LEFT_OUTER_JOIN        = 0x00000040L,
  1952.     SQL_SRJO_NATURAL_JOIN        = 0x00000080L,
  1953.     SQL_SRJO_RIGHT_OUTER_JOIN        = 0x00000100L,
  1954.     SQL_SRJO_UNION_JOIN            = 0x00000200L
  1955. };
  1956.  
  1957. enum enumSQL92Revoke {
  1958.     SQL_SR_USAGE_ON_DOMAIN        = 0x00000001L,
  1959.     SQL_SR_USAGE_ON_CHARACTER_SET    = 0x00000002L,
  1960.     SQL_SR_USAGE_ON_COLLATION        = 0x00000004L,
  1961.     SQL_SR_USAGE_ON_TRANSLATION        = 0x00000008L,
  1962.     SQL_SR_GRANT_OPTION_FOR        = 0x00000010L,
  1963.     SQL_SR_CASCADE            = 0x00000020L,
  1964.     SQL_SR_RESTRICT            = 0x00000040L,
  1965.     SQL_SR_DELETE_TABLE            = 0x00000080L,
  1966.     SQL_SR_INSERT_TABLE            = 0x00000100L,
  1967.     SQL_SR_INSERT_COLUMN        = 0x00000200L,
  1968.     SQL_SR_REFERENCES_TABLE        = 0x00000400L,
  1969.     SQL_SR_REFERENCES_COLUMN        = 0x00000800L,
  1970.     SQL_SR_SELECT_TABLE            = 0x00001000L,
  1971.     SQL_SR_UPDATE_TABLE            = 0x00002000L,
  1972.     SQL_SR_UPDATE_COLUMN        = 0x00004000L
  1973. };
  1974.  
  1975. enum enumSQL92RowValueConstructor {
  1976.     SQL_SRVC_VALUE_EXPRESSION    = 0x00000001L,
  1977.     SQL_SRVC_NULL        = 0x00000002L,
  1978.     SQL_SRVC_DEFAULT        = 0x00000004L,
  1979.     SQL_SRVC_ROW_SUBQUERY    = 0x00000008L
  1980. };
  1981.  
  1982. enum enumSQL92ValueExpressions {
  1983.     SQL_SVE_CASE    = 0x00000001L,
  1984.     SQL_SVE_CAST    = 0x00000002L,
  1985.     SQL_SVE_COALESCE    = 0x00000004L,
  1986.     SQL_SVE_NULLIF    = 0x00000008L
  1987. };
  1988.  
  1989. enum enumSQL92StandardCLIConformance {
  1990.     SQL_SCC_XOPEN_CLI_VERSION1    = 0x00000001L,
  1991.     SQL_SCC_ISO92_CLI        = 0x00000002L
  1992. };
  1993.  
  1994. #define SQL_US_UNION        SQL_U_UNION
  1995. #define SQL_US_UNION_ALL    SQL_U_UNION_ALL
  1996.  
  1997. #endif /* ODBCVER >= 0x0300 -- ODBC 3.0 SQLGetInfo return values */
  1998.  
  1999. enum enumSQLGetInfo {            /* Types of information available */
  2000.     /* Driver information */
  2001.     SQL_INFO_FIRST,            /* first GetInfo type */
  2002.     SQL_ACTIVE_CONNECTIONS = 0,        /* returns short */
  2003.     #if (ODBCVER >= 0x0300)
  2004.     SQL_MAX_DRIVER_CONNECTIONS = 0,
  2005.     SQL_MAX_CONCURRENT_ACTIVITIES,
  2006.     #endif /* ODBCVER >= 0x0300 */
  2007.     SQL_ACTIVE_STATEMENTS = 1,        /* returns short */
  2008.     SQL_DATA_SOURCE_NAME,        /* returns string */
  2009.     SQL_DRIVER_HDBC,            /* returns HDBC */
  2010.     SQL_DRIVER_HENV,            /* returns HENV */
  2011.     SQL_DRIVER_HSTMT,            /* returns HSTMT */
  2012.     SQL_DRIVER_NAME,            /* returns string */
  2013.     SQL_DRIVER_VER,            /* returns string */
  2014.     SQL_FETCH_DIRECTION,        /* returns mask of enumSQLFetchDirection */
  2015.     SQL_ODBC_API_CONFORMANCE,        /* returns integer 0, 1 or 2*/
  2016.     SQL_ODBC_VER,        /* 10 */ /* returns string */
  2017.     SQL_ROW_UPDATES,            /* returns string "Y" or "N" */
  2018.     SQL_ODBC_SAG_CLI_CONFORMANCE,    /* returns short TRUE or FALSE */
  2019.     SQL_SERVER_NAME,            /* returns string */
  2020.     SQL_SEARCH_PATTERN_ESCAPE,        /* returns string */
  2021.     SQL_ODBC_SQL_CONFORMANCE,        /* returns short 0, 1 or 2 */
  2022.     /* DBMS information */
  2023.     SQL_DATABASE_NAME,            /* Use SQLGetConnectOption/SQL_CURRENT_QUALIFIER */
  2024.     SQL_DBMS_NAME,            /* returns string */
  2025.     SQL_DBMS_VER,            /* returns string */
  2026.     /* Data source capabilities */
  2027.     SQL_ACCESSIBLE_TABLES,        /* returns string "Y" or "N" */
  2028.     SQL_ACCESSIBLE_PROCEDURES,    /* 20 */ /* returns string "Y" or "N" */
  2029.     SQL_PROCEDURES,            /* returns string "Y" or "N" */
  2030.     SQL_CONCAT_NULL_BEHAVIOR,        /* returns short 0=NULL 1=empty string */
  2031.     SQL_CURSOR_COMMIT_BEHAVIOR,        /* returns short 0=close/del 1=close 2=open */
  2032.     SQL_CURSOR_ROLLBACK_BEHAVIOR,    /* same as above */
  2033.     SQL_DATA_SOURCE_READ_ONLY,        /* returns string "Y" or "N" */
  2034.     SQL_DEFAULT_TXN_ISOLATION,        /* returns mask of enumSQLIsolation */
  2035.     SQL_EXPRESSIONS_IN_ORDERBY,        /* returns string "Y" or "N" */
  2036.     SQL_IDENTIFIER_CASE,        /* returns short 0=UPR 1=LWR 2=case sens 3=ins*/
  2037.     SQL_IDENTIFIER_QUOTE_CHAR,        /* returns string */
  2038.     SQL_MAX_COLUMN_NAME_LEN,    /* 30 */ /* returns short */
  2039.     SQL_MAX_CURSOR_NAME_LEN,        /* returns short */
  2040.     SQL_MAX_OWNER_NAME_LEN,        /* returns short */
  2041.     SQL_MAX_SCHEMA_NAME_LEN = 32,
  2042.     SQL_MAX_PROCEDURE_NAME_LEN,        /* returns short */
  2043.     SQL_MAX_QUALIFIER_NAME_LEN,        /* returns short */
  2044.     SQL_MAX_CATALOG_NAME_LEN = 34,
  2045.     SQL_MAX_TABLE_NAME_LEN,        /* returns short */
  2046.     SQL_MULT_RESULT_SETS,        /* returns string "Y" or "N" */
  2047.     SQL_MULTIPLE_ACTIVE_TXN,        /* returns string "Y" or "N" */
  2048.     SQL_OUTER_JOINS,            /* returns string "Y" or "N" */
  2049.     SQL_OWNER_TERM,            /* returns string */
  2050.     SQL_PROCEDURE_TERM,        /* 40 */ /* returns string */
  2051.     SQL_QUALIFIER_NAME_SEPARATOR,    /* returns string */
  2052.     SQL_QUALIFIER_TERM,            /* returns string */
  2053.     SQL_SCROLL_CONCURRENCY,        /* returns mask of enumSQLConcurMask */
  2054.     SQL_SCROLL_OPTIONS,            /* returns mask of enumSQLScrollOptions */
  2055.     SQL_TABLE_TERM,            /* returns string */
  2056.     SQL_TXN_CAPABLE,            /* returns short 0=none 1=DML 2=DML&DDL */
  2057.     SQL_USER_NAME,            /* returns string */
  2058.     /* Available functions */
  2059.     SQL_CONVERT_FUNCTIONS,        /* returns mask of enumSQLConvertFunctions */
  2060.     SQL_NUMERIC_FUNCTIONS,        /* returns mask of enumSQLNumericFunctions */
  2061.     SQL_STRING_FUNCTIONS,    /* 50 */ /* returns mask of enumSQLStringFunctions */
  2062.     SQL_SYSTEM_FUNCTIONS,        /* returns mask of enumSQLSystemFunctions */
  2063.     SQL_TIMEDATE_FUNCTIONS,        /* returns mask of enumSQLTimedateFunctions */
  2064.     /* Conversion capabilities -- all return mask of enumSQLConvert */
  2065.     SQL_CONVERT_BIGINT,
  2066.     SQL_CONVERT_BINARY,
  2067.     SQL_CONVERT_BIT,
  2068.     SQL_CONVERT_CHAR,
  2069.     SQL_CONVERT_DATE,
  2070.     SQL_CONVERT_DECIMAL,
  2071.     SQL_CONVERT_DOUBLE,
  2072.     SQL_CONVERT_FLOAT,            /* 60 */
  2073.     SQL_CONVERT_INTEGER,
  2074.     SQL_CONVERT_LONGVARCHAR,
  2075.     SQL_CONVERT_NUMERIC,
  2076.     SQL_CONVERT_REAL,
  2077.     SQL_CONVERT_SMALLINT,
  2078.     SQL_CONVERT_TIME,
  2079.     SQL_CONVERT_TIMESTAMP,
  2080.     SQL_CONVERT_TINYINT,
  2081.     SQL_CONVERT_VARBINARY,
  2082.     SQL_CONVERT_VARCHAR,        /* 70 */
  2083.     SQL_CONVERT_LONGVARBINARY,
  2084.     /* Afterthought -- should be in Data source capabilities */
  2085.     SQL_TXN_ISOLATION_OPTION,        /* returns enumSQLIsolation */
  2086.     SQL_ODBC_SQL_OPT_IEF,
  2087.     SQL_INTEGRITY = 73,
  2088.     SQL_CORRELATION_NAME,
  2089.     SQL_NON_NULLABLE_COLUMNS
  2090.     #if (ODBCVER >= 0x0200)
  2091. ,   SQL_DRIVER_HLIB,
  2092.     SQL_DRIVER_ODBC_VER,
  2093.     SQL_LOCK_TYPES,
  2094.     SQL_POS_OPERATIONS,
  2095.     SQL_POSITIONED_STATEMENTS,        /* 80 */
  2096.     SQL_GETDATA_EXTENSIONS,
  2097.     SQL_BOOKMARK_PERSISTENCE,
  2098.     SQL_STATIC_SENSITIVITY,
  2099.     SQL_FILE_USAGE,
  2100.     SQL_NULL_COLLATION,
  2101.     SQL_ALTER_TABLE,
  2102.     SQL_COLUMN_ALIAS,
  2103.     SQL_GROUP_BY,
  2104.     SQL_KEYWORDS,
  2105.     SQL_ORDER_BY_COLUMNS_IN_SELECT,    /* 90 */
  2106.     SQL_OWNER_USAGE,
  2107.     SQL_QUALIFIER_USAGE,
  2108.     SQL_QUOTED_IDENTIFIER_CASE,
  2109.     SQL_SPECIAL_CHARACTERS,
  2110.     SQL_SUBQUERIES,
  2111.     SQL_UNION,
  2112.     SQL_MAX_COLUMNS_IN_GROUP_BY,
  2113.     SQL_MAX_COLUMNS_IN_INDEX,
  2114.     SQL_MAX_COLUMNS_IN_ORDER_BY,
  2115.     SQL_MAX_COLUMNS_IN_SELECT,        /* 100 */
  2116.     SQL_MAX_COLUMNS_IN_TABLE,
  2117.     SQL_MAX_INDEX_SIZE,
  2118.     SQL_MAX_ROW_SIZE_INCLUDES_LONG,
  2119.     SQL_MAX_ROW_SIZE,
  2120.     SQL_MAX_STATEMENT_LEN,
  2121.     SQL_MAX_TABLES_IN_SELECT,
  2122.     SQL_MAX_USER_NAME_LEN,
  2123.     SQL_MAX_CHAR_LITERAL_LEN,
  2124.     SQL_TIMEDATE_ADD_INTERVALS,
  2125.     SQL_TIMEDATE_DIFF_INTERVALS,    /* 110 */
  2126.     SQL_NEED_LONG_DATA_LEN,
  2127.     SQL_MAX_BINARY_LITERAL_LEN,
  2128.     SQL_LIKE_ESCAPE_CLAUSE,
  2129.     SQL_QUALIFIER_LOCATION
  2130.  
  2131.     #if (ODBCVER >= 0x0300)
  2132. ,   SQL_OJ_CAPABILITIES,
  2133.     SQL_ACTIVE_ENVIRONMENTS,
  2134.     SQL_ALTER_DOMAIN,
  2135.     SQL_SQL_CONFORMANCE,
  2136.     SQL_DATETIME_LITERALS,
  2137.     SQL_BATCH_ROW_COUNT,        /* 120 */
  2138.     SQL_BATCH_SUPPORT,
  2139.     SQL_CONVERT_WCHAR,
  2140.     SQL_CONVERT_INTERVAL_DAY_TIME,
  2141.     SQL_CONVERT_INTERVAL_YEAR_MONTH,
  2142.     SQL_CONVERT_WLONGVARCHAR,
  2143.     SQL_CONVERT_WVARCHAR,
  2144.     SQL_CREATE_ASSERTION,
  2145.     SQL_CREATE_CHARACTER_SET,
  2146.     SQL_CREATE_COLLATION,
  2147.     SQL_CREATE_DOMAIN,            /* 130 */
  2148.     SQL_CREATE_SCHEMA,
  2149.     SQL_CREATE_TABLE,
  2150.     SQL_CREATE_TRANSLATION,
  2151.     SQL_CREATE_VIEW,
  2152.     SQL_DRIVER_HDESC,
  2153.     SQL_DROP_ASSERTION,
  2154.     SQL_DROP_CHARACTER_SET,
  2155.     SQL_DROP_COLLATION,
  2156.     SQL_DROP_DOMAIN,
  2157.     SQL_DROP_SCHEMA,            /* 140 */
  2158.     SQL_DROP_TABLE,
  2159.     SQL_DROP_TRANSLATION,
  2160.     SQL_DROP_VIEW,
  2161.     SQL_DYNAMIC_CURSOR_ATTRIBUTES1,
  2162.     SQL_DYNAMIC_CURSOR_ATTRIBUTES2,
  2163.     SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1,
  2164.     SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2,
  2165.     SQL_INDEX_KEYWORDS,
  2166.     SQL_INFO_SCHEMA_VIEWS,
  2167.     SQL_KEYSET_CURSOR_ATTRIBUTES1,    /* 150 */
  2168.     SQL_KEYSET_CURSOR_ATTRIBUTES2,
  2169.     SQL_ODBC_INTERFACE_CONFORMANCE,
  2170.     SQL_PARAM_ARRAY_ROW_COUNTS,
  2171.     SQL_PARAM_ARRAY_SELECTS,
  2172.     SQL_SQL92_DATETIME_FUNCTIONS,
  2173.     SQL_SQL92_FOREIGN_KEY_DELETE_RULE,
  2174.     SQL_SQL92_FOREIGN_KEY_UPDATE_RULE,
  2175.     SQL_SQL92_GRANT,
  2176.     SQL_SQL92_NUMERIC_VALUE_FUNCTIONS,
  2177.     SQL_SQL92_PREDICATES,        /* 160 */
  2178.     SQL_SQL92_RELATIONAL_JOIN_OPERATORS,
  2179.     SQL_SQL92_REVOKE,
  2180.     SQL_SQL92_ROW_VALUE_CONSTRUCTOR,
  2181.     SQL_SQL92_STRING_FUNCTIONS,
  2182.     SQL_SQL92_VALUE_EXPRESSIONS,
  2183.     SQL_STANDARD_CLI_CONFORMANCE,
  2184.     SQL_STATIC_CURSOR_ATTRIBUTES1,
  2185.     SQL_STATIC_CURSOR_ATTRIBUTES2,
  2186.     SQL_AGGREGATE_FUNCTIONS,
  2187.     SQL_DDL_INDEX,            /* 170 */
  2188.     SQL_DM_VER,
  2189.     SQL_INSERT_STATEMENT,
  2190.  
  2191.     SQL_XOPEN_CLI_YEAR = 10000,        /* 10000 */
  2192.     SQL_CURSOR_SENSITIVITY,
  2193.     SQL_DESCRIBE_PARAMETER,
  2194.     SQL_CATALOG_NAME,
  2195.     SQL_COLLATION_SEQ,
  2196.     SQL_MAX_IDENTIFIER_LEN,
  2197.     SQL_ASYNC_MODE = 10021,        /* 10021 */
  2198.     SQL_MAX_ASYNC_CONCURRENT_STATEMENTS
  2199.     #elif (ODBCVER >= 0x0201)
  2200.     /* Enums are of type int: the rest can't be enums with 16 bit compilers */
  2201.     #define SQL_OJ_CAPABILITIES    65003    /* Temp value until ODBC 3.0 */
  2202.     #endif /* ODBCVER >= 0x0300 */
  2203.  
  2204.     #endif /* ODBCVER >= 0x0200 */
  2205. };
  2206. #if (ODBCVER >= 0x0300)
  2207. #define SQL_CATALOG_LOCATION        SQL_QUALIFIER_LOCATION
  2208. #define SQL_CATALOG_NAME_SEPARATOR    SQL_QUALIFIER_NAME_SEPARATOR
  2209. #define SQL_CATALOG_TERM        SQL_QUALIFIER_TERM
  2210. #define SQL_CATALOG_USAGE        SQL_QUALIFIER_USAGE
  2211. #define SQL_SCHEMA_TERM            SQL_OWNER_TERM
  2212. #define SQL_SCHEMA_USAGE        SQL_OWNER_USAGE
  2213. #define SQL_UNION_STATEMENT        SQL_UNION
  2214. #endif /* ODBCVER >= 0x0300 */
  2215.  
  2216. /* SQL_INFO_LAST and SQL_INFO_DRIVER_START ---------------------------- */
  2217. /* Not useful with ODBC 3.0 since X/Open values > 10000.  Must contact  */
  2218. /* X/Open directly to get a range of numbers for driver-specific values */
  2219. /* -------------------------------------------------------------------- */
  2220. #if (ODBCVER < 0x0300)
  2221. #define SQL_INFO_LAST        SQL_QUALIFIER_LOCATION
  2222. #define SQL_INFO_DRIVER_START    1000
  2223. #endif /* ODBCVER >= 0x0300 */
  2224.  
  2225. /* Aliases for SQLGetInfo types */
  2226. #if (ODBCVER >= 0x0300)
  2227. #define SQL_MAXIMUM_DRIVER_CONNECTIONS        SQL_MAX_DRIVER_CONNECTIONS
  2228. #define SQL_MAXIMUM_CONCURRENT_ACTIVITIES    SQL_MAX_CONCURRENT_ACTIVITIES
  2229. #define SQL_MAXIMUM_COLUMN_NAME_LENGTH        SQL_MAX_COLUMN_NAME_LEN
  2230. #define SQL_MAXIMUM_CURSOR_NAME_LENGTH        SQL_MAX_CURSOR_NAME_LEN
  2231. #define SQL_MAXIMUM_SCHEMA_NAME_LENGTH        SQL_MAX_SCHEMA_NAME_LEN
  2232. #define SQL_MAXIMUM_CATALOG_NAME_LENGTH        SQL_MAX_CATALOG_NAME_LEN
  2233. #define SQL_MAXIMUM_TABLE_NAME_LENGTH        SQL_MAX_TABLE_NAME_LEN
  2234. #define SQL_TRANSACTION_CAPABLE            SQL_TXN_CAPABLE
  2235. #define SQL_TRANSACTION_ISOLATION_OPTION    SQL_TXN_ISOLATION_OPTION
  2236. #define SQL_MAXIMUM_COLUMNS_IN_GROUP_BY        SQL_MAX_COLUMNS_IN_GROUP_BY
  2237. #define SQL_MAXIMUM_COLUMNS_IN_INDEX        SQL_MAX_COLUMNS_IN_INDEX
  2238. #define SQL_MAXIMUM_COLUMNS_IN_ORDER_BY        SQL_MAX_COLUMNS_IN_ORDER_BY
  2239. #define SQL_MAXIMUM_COLUMNS_IN_SELECT        SQL_MAX_COLUMNS_IN_SELECT
  2240. #define SQL_MAXIMUM_INDEX_SIZE            SQL_MAX_INDEX_SIZE
  2241. #define SQL_MAXIMUM_ROW_SIZE            SQL_MAX_ROW_SIZE
  2242. #define SQL_MAXIMUM_STATEMENT_LENGTH        SQL_MAX_STATEMENT_LEN
  2243. #define SQL_MAXIMUM_TABLES_IN_SELECT        SQL_MAX_TABLES_IN_SELECT
  2244. #define SQL_MAXIMUM_USER_NAME_LENGTH        SQL_MAX_USER_NAME_LEN
  2245. #define SQL_OUTER_JOIN_CAPABILITIES        SQL_OJ_CAPABILITIES
  2246. #define SQL_MAXIMUM_IDENTIFIER_LENGTH        SQL_MAX_IDENTIFIER_LEN
  2247. #endif /* ODBCVER >= 0x0300 */
  2248.  
  2249. SQLRETURN ODBC_API SQLGetInfo(            /* Level 1 */
  2250.     SQLHDBC            ConnectionHandle,
  2251.     SQLUSMALLINT        InfoType,    /* enumSQLGetInfo */
  2252.     SQLPOINTER            InfoValue,
  2253.     SQLSMALLINT            BufferLength,
  2254.     SQLSMALLINT ODBCFAR *    StringLength );
  2255.  
  2256. /* API functions -- descriptors */
  2257.  
  2258. #if (ODBCVER >= 0x0300)
  2259. enum enumWhereSearchable {    /* Shows WHERE clause supported in
  2260.                    SQLGetTypeInfo, SQLColAttributes,
  2261.                    SQLSetDescField */
  2262.     SQL_PRED_NONE,
  2263.     SQL_PRED_CHAR,
  2264.     SQL_PRED_BASIC
  2265. };
  2266.  
  2267. enum enumUnnamed {
  2268.     SQL_NAMED,
  2269.     SQL_UNNAMED
  2270. };
  2271.  
  2272. enum enumAllocType {
  2273.     SQL_DESC_ALLOC_AUTO    = 1,
  2274.     SQL_DESC_ALLOC_USER
  2275. };
  2276.  
  2277. enum enumSQLDescField {
  2278.     /* Extended descriptor fields */
  2279.     SQL_DESC_ARRAY_SIZE            = 20,
  2280.     SQL_DESC_ARRAY_STATUS_PTR,
  2281.     SQL_DESC_BASE_COLUMN_NAME,
  2282.     SQL_DESC_BASE_TABLE_NAME,
  2283.     SQL_DESC_BIND_OFFSET_PTR,
  2284.     SQL_DESC_BIND_TYPE,
  2285.     SQL_DESC_DATETIME_INTERVAL_PRECISION,
  2286.     SQL_DESC_LITERAL_PREFIX,
  2287.     SQL_DESC_LITERAL_SUFFIX,
  2288.     SQL_DESC_LOCAL_TYPE_NAME,
  2289.     SQL_DESC_MAXIMUM_SCALE,
  2290.     SQL_DESC_MINIMUM_SCALE,
  2291.     SQL_DESC_NUM_PREC_RADIX,
  2292.     SQL_DESC_PARAMETER_TYPE,
  2293.     SQL_DESC_ROWS_PROCESSED_PTR,
  2294.  
  2295.     /* Identifiers of fields */
  2296.     SQL_DESC_COUNT            = 1001,
  2297.     SQL_DESC_TYPE,
  2298.     SQL_DESC_LENGTH,
  2299.     SQL_DESC_OCTET_LENGTH_PTR,
  2300.     SQL_DESC_PRECISION,
  2301.     SQL_DESC_SCALE,
  2302.     SQL_DESC_DATETIME_INTERVAL_CODE,
  2303.     SQL_DESC_NULLABLE,
  2304.     SQL_DESC_INDICATOR_PTR,
  2305.     SQL_DESC_DATA_PTR,
  2306.     SQL_DESC_NAME,
  2307.     SQL_DESC_UNNAMED,
  2308.     SQL_DESC_OCTET_LENGTH,
  2309.     SQL_DESC_ALLOC_TYPE            = 1099
  2310. };
  2311.  
  2312. /* Extended descriptor fields */
  2313. #define SQL_DESC_AUTO_UNIQUE_VALUE    SQL_COLUMN_AUTO_INCREMENT
  2314. #define SQL_DESC_CASE_SENSITIVE        SQL_COLUMN_CASE_SENSITIVE
  2315. #define SQL_DESC_CATALOG_NAME        SQL_COLUMN_QUALIFIER_NAME
  2316. #define SQL_DESC_CONCISE_TYPE        SQL_COLUMN_TYPE
  2317. #define SQL_DESC_DISPLAY_SIZE        SQL_COLUMN_DISPLAY_SIZE
  2318. #define SQL_DESC_FIXED_PREC_SCALE    SQL_COLUMN_MONEY
  2319. #define SQL_DESC_LABEL            SQL_COLUMN_LABEL
  2320. #define SQL_DESC_SCHEMA_NAME        SQL_COLUMN_OWNER_NAME
  2321. #define SQL_DESC_SEARCHABLE        SQL_COLUMN_SEARCHABLE
  2322. #define SQL_DESC_TYPE_NAME        SQL_COLUMN_TYPE_NAME
  2323. #define SQL_DESC_TABLE_NAME        SQL_COLUMN_TABLE_NAME
  2324. #define SQL_DESC_UNSIGNED        SQL_COLUMN_UNSIGNED
  2325. #define SQL_DESC_UPDATABLE        SQL_COLUMN_UPDATABLE
  2326.  
  2327. enum enumDescArrayStatusPtr {
  2328.     SQL_PARAM_PROCEED        = 0,
  2329.     SQL_PARAM_IGNORE,
  2330.     SQL_PARAM_SUCCESS        = 0,
  2331.     SQL_PARAM_DIAG_UNAVAILABLE,
  2332.     SQL_PARAM_ERROR        = 5,
  2333.     SQL_PARAM_SUCCESS_WITH_INFO,
  2334.     SQL_PARAM_UNUSED
  2335. };
  2336.  
  2337. SQLRETURN ODBC_API SQLCopyDesc(
  2338.     SQLHDESC    SourceDescHandle,
  2339.     SQLHDESC    TargetDescHandle );
  2340.  
  2341. SQLRETURN ODBC_API SQLGetDescField(
  2342.     SQLHDESC            DescriptorHandle,
  2343.     SQLSMALLINT            RecNumber,
  2344.     SQLSMALLINT            FieldIdentifier,
  2345.     SQLPOINTER            Value,
  2346.     SQLINTEGER             BufferLength,
  2347.     SQLINTEGER ODBCFAR *    StringLength );
  2348.  
  2349. SQLRETURN ODBC_API SQLSetDescField(
  2350.     SQLHDESC            DescriptorHandle,
  2351.     SQLSMALLINT            RecNumber,
  2352.     SQLSMALLINT            FieldIdentifier,
  2353.     SQLPOINTER            Value,
  2354.     SQLINTEGER            BufferLength );
  2355.  
  2356. SQLRETURN ODBC_API SQLGetDescRec(
  2357.     SQLHDESC            DescriptorHandle,
  2358.     SQLSMALLINT            RecNumber,
  2359.     SQLCHAR ODBCFAR *        Name,
  2360.     SQLSMALLINT            BufferLength,
  2361.     SQLSMALLINT ODBCFAR *    StringLength,
  2362.     SQLSMALLINT ODBCFAR *    Type,
  2363.     SQLSMALLINT ODBCFAR *    SubType, 
  2364.     SQLINTEGER ODBCFAR *    Length,
  2365.     SQLSMALLINT ODBCFAR *    Precision, 
  2366.     SQLSMALLINT ODBCFAR *    Scale,
  2367.     SQLSMALLINT ODBCFAR *    Nullable );
  2368.  
  2369. SQLRETURN ODBC_API SQLSetDescRec(
  2370.     SQLHDESC            DescriptorHandle,
  2371.     SQLSMALLINT            RecNumber,
  2372.     SQLSMALLINT            Type,
  2373.     SQLSMALLINT            SubType,
  2374.     SQLINTEGER            Length,
  2375.     SQLSMALLINT            Precision,
  2376.     SQLSMALLINT            Scale,
  2377.     SQLPOINTER            Data,
  2378.     SQLINTEGER ODBCFAR *    StringLength,
  2379.     SQLINTEGER ODBCFAR *    Indicator );
  2380.  
  2381. #endif /* ODBCVER >= 0x0300 */
  2382.  
  2383. /* API functions -- diagnostics */
  2384.  
  2385. #if (ODBCVER >= 0x0300)
  2386. enum enumDiagRowNumber {
  2387.     SQL_ROW_NUMBER_UNKNOWN    = -2,
  2388.     SQL_NO_ROW_NUMBER
  2389. };
  2390.  
  2391. enum enumDiagColumnNumber {
  2392.     SQL_COLUMN_NUMBER_UNKNOWN    = -2,
  2393.     SQL_NO_COLUMN_NUMBER
  2394. };
  2395.  
  2396. enum enumSQLDiagField {
  2397.     SQL_DIAG_CURSOR_ROW_COUNT    = -1249,
  2398.     SQL_DIAG_ROW_NUMBER,
  2399.     SQL_DIAG_COLUMN_NUMBER,
  2400.     SQL_DIAG_RETURNCODE        = 1,
  2401.     SQL_DIAG_NUMBER,
  2402.     SQL_DIAG_ROW_COUNT,
  2403.     SQL_DIAG_SQLSTATE,
  2404.     SQL_DIAG_NATIVE,
  2405.     SQL_DIAG_MESSAGE_TEXT,
  2406.     SQL_DIAG_DYNAMIC_FUNCTION,
  2407.     SQL_DIAG_CLASS_ORIGIN,
  2408.     SQL_DIAG_SUBCLASS_ORIGIN,
  2409.     SQL_DIAG_CONNECTION_NAME,
  2410.     SQL_DIAG_SERVER_NAME,
  2411.     SQL_DIAG_DYNAMIC_FUNCTION_CODE
  2412. };
  2413.  
  2414. enum enumDynamicFunction {
  2415.     SQL_DIAG_ALTER_TABLE        = 4,
  2416.     SQL_DIAG_CALL            = 7,
  2417.     SQL_DIAG_CREATE_INDEX        = -1,
  2418.     SQL_DIAG_CREATE_TABLE        = 77,
  2419.     SQL_DIAG_CREATE_VIEW        = 84,
  2420.     SQL_DIAG_DELETE_WHERE        = 19,
  2421.     SQL_DIAG_DROP_INDEX            = -2,
  2422.     SQL_DIAG_DROP_TABLE            = 32,
  2423.     SQL_DIAG_DROP_VIEW            = 36,
  2424.     SQL_DIAG_DYNAMIC_DELETE_CURSOR    = 38,
  2425.     SQL_DIAG_DYNAMIC_UPDATE_CURSOR    = 81,
  2426.     SQL_DIAG_GRANT            = 48,
  2427.     SQL_DIAG_INSERT            = 50,
  2428.     SQL_DIAG_REVOKE            = 59,
  2429.     SQL_DIAG_SELECT_CURSOR        = 85,
  2430.     SQL_DIAG_UNKNOWN_STATEMENT        = 0,
  2431.     SQL_DIAG_UPDATE_WHERE        = 82
  2432. };
  2433.  
  2434. SQLRETURN ODBC_API SQLGetDiagField(
  2435.     SQLSMALLINT            HandleType,
  2436.     SQLHANDLE            Handle,
  2437.     SQLSMALLINT            RecNumber,
  2438.     SQLSMALLINT            DiagIdentifier,
  2439.     SQLPOINTER            DiagInfo,
  2440.     SQLSMALLINT            BufferLength,
  2441.     SQLSMALLINT ODBCFAR *    StringLength );
  2442.  
  2443. SQLRETURN ODBC_API SQLGetDiagRec(
  2444.     SQLSMALLINT            HandleType,
  2445.     SQLHANDLE            Handle,
  2446.     SQLSMALLINT            RecNumber,
  2447.     SQLCHAR ODBCFAR *        Sqlstate,
  2448.     SQLINTEGER ODBCFAR *    NativeError,
  2449.     SQLCHAR ODBCFAR *        MessageText,
  2450.     SQLSMALLINT            BufferLength,
  2451.     SQLSMALLINT ODBCFAR *    TextLength );
  2452.  
  2453. #endif /* ODBCVER >= 0x0300 */
  2454.  
  2455. /* API functions -- statements */
  2456.  
  2457. SQLRETURN ODBC_API SQLAllocStmt(    /* CORE */
  2458.     SQLHDBC        ConnectionHandle,
  2459.     SQLHSTMT ODBCFAR *    StatementHandle );
  2460.  
  2461. SQLRETURN ODBC_API SQLCancel(        /* CORE */
  2462.     SQLHSTMT        hstmt );
  2463.  
  2464. #if (ODBCVER >= 0x0300)
  2465. SQLRETURN ODBC_API SQLCloseCursor(
  2466.     SQLHSTMT        StatementHandle );
  2467. #endif /* ODBCVER >= 0x0300 */
  2468.  
  2469. SQLRETURN ODBC_API SQLExecDirect(    /* CORE */
  2470.     SQLHSTMT        StatementHandle,
  2471.     SQLCHAR ODBCFAR *    StatementText,
  2472.     SQLINTEGER        TextLength );
  2473.  
  2474. SQLRETURN ODBC_API SQLPrepare(        /* CORE */
  2475.     SQLHSTMT        StatementHandle,
  2476.     SQLCHAR ODBCFAR *    StatementText,
  2477.     SQLINTEGER        TextLength );
  2478.  
  2479. SQLRETURN ODBC_API SQLExecute(        /* CORE */
  2480.     SQLHSTMT        StatementHandle );
  2481.  
  2482. #if (ODBCVER >= 0x0300)
  2483. SQLRETURN ODBC_API SQLGetStmtAttr(
  2484.     SQLHSTMT            StatementHandle,
  2485.     SQLINTEGER            Attribute,
  2486.     SQLPOINTER            Value,
  2487.     SQLINTEGER            BufferLength,
  2488.     SQLINTEGER ODBCFAR *    StringLength );
  2489.  
  2490. SQLRETURN ODBC_API SQLSetStmtAttr(
  2491.     SQLHSTMT            StatementHandle,
  2492.     SQLINTEGER            Attribute,
  2493.     SQLPOINTER            Value,
  2494.     SQLINTEGER            StringLength );
  2495. #endif /* ODBCVER >= 0x0300 */
  2496.  
  2497. SQLRETURN ODBC_API SQLGetStmtOption(    /* Level 1 */
  2498.     SQLHSTMT            StatementHandle,
  2499.     SQLUSMALLINT        Option,    /* enumSQLOption */
  2500.     SQLPOINTER            Value );
  2501.  
  2502. SQLRETURN ODBC_API SQLSetStmtOption(    /* Level 1 */
  2503.     SQLHSTMT        StatementHandle,
  2504.     SQLUSMALLINT    Option,        /* enumSQLOption */
  2505.     SQLUINTEGER        Value );
  2506.  
  2507. enum enumSQLFreeStmt {
  2508.     SQL_CLOSE,
  2509.     SQL_DROP,
  2510.     SQL_UNBIND,
  2511.     SQL_RESET_PARAMS
  2512. };
  2513.  
  2514. SQLRETURN ODBC_API SQLFreeStmt(        /* CORE */
  2515.     SQLHSTMT        StatementHandle,
  2516.     SQLUSMALLINT    Option );    /* enumSQLFreeStmt */
  2517.  
  2518. #if (ODBCVER >= 0x0300)
  2519. enum enumSQLStmtAttr {
  2520.     SQL_ATTR_APP_ROW_DESC    = 10010,
  2521.     SQL_ATTR_APP_PARAM_DESC,
  2522.     SQL_ATTR_IMP_ROW_DESC,
  2523.     SQL_ATTR_IMP_PARAM_DESC
  2524. };
  2525.  
  2526. /* SQL_ATTR_CURSOR_SCROLLABLE values */
  2527. enum enumSQLAttrCursor {
  2528.     SQL_NONSCROLLABLE,
  2529.     SQL_SCROLLABLE
  2530. };
  2531.  
  2532. enum enumCursorSensitivity {
  2533.     SQL_UNSPECIFIED,
  2534.     SQL_INSENSITIVE,
  2535.     SQL_SENSITIVE
  2536. };
  2537. #endif /* ODBCVER >= 0x0300 */
  2538.  
  2539. /* Result related functions */
  2540.  
  2541. SQLRETURN ODBC_API SQLBindCol(            /* CORE */
  2542.     SQLHSTMT            StatementHandle,
  2543.     SQLUSMALLINT        ColumnNumber,    /* 1..n */
  2544.     SQLSMALLINT            TargetType,    /* SQL_C_... */
  2545.     SQLPOINTER            TargetValue,
  2546.     SQLINTEGER            BufferLength,
  2547.     SQLINTEGER ODBCFAR *    StrLen_or_Ind );
  2548.  
  2549. enum enumSQLColAttrType {    /* SQLColAttributes FieldIdentifier values */
  2550.     SQL_COLUMN_COUNT,
  2551.     SQL_COLUMN_NAME,
  2552.     SQL_COLUMN_TYPE,
  2553.     SQL_COLUMN_LENGTH,
  2554.     SQL_COLUMN_PRECISION,
  2555.     SQL_COLUMN_SCALE,
  2556.     SQL_COLUMN_DISPLAY_SIZE,
  2557.     SQL_COLUMN_NULLABLE,    /* returns enumSQLNullable */
  2558.     SQL_COLUMN_UNSIGNED,
  2559.     SQL_COLUMN_MONEY,
  2560.     SQL_COLUMN_UPDATABLE,    /* returns enumSQLUpdatable */
  2561.     SQL_COLUMN_AUTO_INCREMENT,
  2562.     SQL_COLUMN_CASE_SENSITIVE,
  2563.     SQL_COLUMN_SEARCHABLE,    /* returns enumSQLSearchable */
  2564.     SQL_COLUMN_TYPE_NAME
  2565.     #if (ODBCVER >= 0x0200)
  2566.     ,
  2567.     SQL_COLUMN_TABLE_NAME,
  2568.     SQL_COLUMN_OWNER_NAME,
  2569.     SQL_COLUMN_QUALIFIER_NAME,
  2570.     SQL_COLUMN_LABEL
  2571.     #endif /* ODBCVER >= 0x0200 */
  2572. };
  2573.  
  2574. #define SQL_COLATT_OPT_MAX        SQL_COLUMN_LABEL
  2575. #define SQL_COLATT_OPT_MIN        SQL_COLUMN_COUNT
  2576. #define SQL_COLUMN_DRIVER_START        1000
  2577.  
  2578. enum enumSQLNullable {        /* Output from SQLColAttributes,
  2579.                    SQLDescribeCol and SQLSpecialColumns */
  2580.     SQL_NO_NULLS,
  2581.     SQL_NULLABLE,
  2582.     SQL_NULLABLE_UNKNOWN
  2583. };
  2584.  
  2585. enum enumSQLUpdatable {        /* Output from SQLColAttributes */
  2586.     SQL_ATTR_READONLY,
  2587.     SQL_ATTR_WRITE,
  2588.     SQL_ATTR_READWRITE_UNKNOWN
  2589. };
  2590.  
  2591. enum enumSQLSearchable {    /* Output from SQLColAttributes */
  2592.     SQL_UNSEARCHABLE,
  2593.     SQL_LIKE_ONLY,
  2594.     SQL_ALL_EXCEPT_LIKE,
  2595.     SQL_SEARCHABLE
  2596. };
  2597. #define SQL_PRED_SEARCHABLE    SQL_SEARCHABLE
  2598.  
  2599. #if (ODBCVER >= 0x0300)
  2600. SQLRETURN ODBC_API SQLColAttribute(
  2601.     SQLHSTMT            StatementHandle,
  2602.     SQLUSMALLINT        ColumnNumber,
  2603.     SQLUSMALLINT        FieldIdentifier,
  2604.     SQLPOINTER            CharacterAttribute,
  2605.     SQLSMALLINT            BufferLength,
  2606.     SQLSMALLINT ODBCFAR *    StringLength,
  2607.     SQLPOINTER            NumericAttribute );
  2608. #endif /* ODBCVER >= 0x0300 */
  2609.  
  2610. SQLRETURN ODBC_API SQLColAttributes(        /* CORE */
  2611.     SQLHSTMT            hstmt,
  2612.     SQLUSMALLINT        icol,        /* 1..n */
  2613.     SQLUSMALLINT        fDescType,    /* enumSQLColAttrType */
  2614.     SQLPOINTER            rgbDesc,
  2615.     SQLSMALLINT            cbDescMax,
  2616.     SQLSMALLINT ODBCFAR *    pcbDesc,
  2617.     SQLINTEGER ODBCFAR *    pfDesc );
  2618.  
  2619. SQLRETURN ODBC_API SQLDescribeCol(        /* CORE */
  2620.     SQLHSTMT            StatementHandle,
  2621.     SQLUSMALLINT        ColumnNumber,    /* 1..n */
  2622.     SQLCHAR ODBCFAR *        ColumnName,
  2623.     SQLSMALLINT            BufferLength,
  2624.     SQLSMALLINT ODBCFAR *    NameLength,
  2625.     SQLSMALLINT ODBCFAR *    DataType,    /* enumSQLTYPE */
  2626.     SQLUINTEGER ODBCFAR *    ColumnSize,
  2627.     SQLSMALLINT ODBCFAR *    DecimalDigits,
  2628.     SQLSMALLINT ODBCFAR *    Nullable );    /* enumSQLNullable */
  2629.  
  2630. SQLRETURN ODBC_API SQLFetch(        /* CORE */
  2631.     SQLHSTMT        StatementHandle );
  2632.  
  2633. enum enumSQLFetchType {
  2634.     SQL_FETCH_NEXT        = 1,
  2635.     SQL_FETCH_FIRST,
  2636.     SQL_FETCH_LAST,
  2637.     SQL_FETCH_PRIOR,
  2638.     SQL_FETCH_ABSOLUTE,
  2639.     SQL_FETCH_RELATIVE
  2640.     /* SQL_FETCH_RESUME        not supported by 2.0+ drivers */
  2641.     #if (ODBCVER >= 0x0200)
  2642.     ,
  2643.     SQL_FETCH_BOOKMARK        = 8
  2644.     #if (ODBCVER >= 0x0300)
  2645.     ,
  2646.     SQL_FETCH_FIRST_USER    = 31,
  2647.     SQL_FETCH_FIRST_SYSTEM
  2648.     #endif /* ODBCVER >= 0x0300 */
  2649.     #endif /* ODBCVER >= 0x0200 */
  2650. };
  2651.  
  2652. #define SQL_FETCH_PREV        SQL_FETCH_PRIOR
  2653.  
  2654. enum enumSQLRowStatus {
  2655.     #if (ODBCVER >= 0x0300)
  2656.     SQL_ROW_PROCEED    = 0,
  2657.     SQL_ROW_IGNORE,
  2658.     #endif /* ODBCVER >= 0x0300 */
  2659.     SQL_ROW_SUCCESS    = 0,
  2660.     SQL_ROW_DELETED,
  2661.     SQL_ROW_UPDATED,
  2662.     SQL_ROW_NOROW
  2663.     #if (ODBCVER >= 0x0200)
  2664.     ,
  2665.     SQL_ROW_ADDED,
  2666.     SQL_ROW_ERROR
  2667.     #if (ODBCVER >= 0x0300)
  2668.     ,
  2669.     SQL_ROW_SUCCESS_WITH_INFO
  2670.     #endif /* ODBCVER >= 0x0300 */
  2671.     #endif /* ODBCVER >= 0x0200 */
  2672. };
  2673.  
  2674. #if (ODBCVER >= 0x0300)
  2675. SQLRETURN ODBC_API SQLFetchScroll(
  2676.     SQLHSTMT        StatementHandle,
  2677.     SQLSMALLINT        FetchOrientation,
  2678.     SQLINTEGER        FetchOffset );
  2679. #endif /* ODBCVER >= 0x0300 */
  2680.  
  2681. SQLRETURN ODBC_API SQLExtendedFetch(        /* Level 2 */
  2682.     SQLHSTMT            hstmt,
  2683.     SQLUSMALLINT        fFetchType,    /* enumSQLFetchType */
  2684.     SQLINTEGER            irow,
  2685.     SQLUINTEGER ODBCFAR *    pcrow,        /* number of rows actually fetched */
  2686.     SQLUSMALLINT ODBCFAR *    rgfRowStatus );    /* array of enumSQLRowStatus */
  2687.  
  2688. #if (ODBCVER >= 0x0300)
  2689. SQLRETURN ODBC_API SQLBulkOperations(
  2690.     SQLHSTMT        StatementHandle,
  2691.     SQLSMALLINT        Operation );
  2692. #endif /* ODBCVER >= 0x0300 */
  2693.  
  2694. enum enumSetPosOps {
  2695.     SQL_POSITION,
  2696.     SQL_REFRESH
  2697.     #if (ODBCVER >= 0x0200)
  2698.     ,
  2699.     SQL_UPDATE,
  2700.     SQL_DELETE,
  2701.     SQL_ADD
  2702.     #if (ODBCVER >= 0x0300)
  2703.     ,
  2704.     SQL_UPDATE_BY_BOOKMARK,
  2705.     SQL_DELETE_BY_BOOKMARK,
  2706.     SQL_FETCH_BY_BOOKMARK
  2707.     #endif /* ODBCVER >= 0x0300 */
  2708.     #endif /* ODBCVER >= 0x0200 */
  2709. };
  2710. #define SQL_SETPOS_MAX_OPTION_VALUE    SQL_ADD
  2711.  
  2712. enum enumSetPosLocks {
  2713.     SQL_LOCK_NO_CHANGE,
  2714.     SQL_LOCK_EXCLUSIVE
  2715.     #if (ODBCVER >= 0x0200)
  2716.     ,
  2717.     SQL_LOCK_UNLOCK
  2718.     #endif /* ODBCVER >= 0x0200 */
  2719. };
  2720. #define SQL_SETPOS_MAX_LOCK_VALUE    SQL_LOCK_UNLOCK
  2721.  
  2722. #define SQL_ENTIRE_ROWSET    0
  2723. #if (ODBCVER >= 0x0200)
  2724.     #define SQL_POSITION_TO(hstmt,irow) \
  2725.             SQLSetPos(hstmt,irow,SQL_POSITION,SQL_LOCK_NO_CHANGE)
  2726.     #define SQL_LOCK_RECORD(hstmt,irow,fLock) \
  2727.             SQLSetPos(hstmt,irow,SQL_POSITION,fLock)
  2728.     #define SQL_REFRESH_RECORD(hstmt,irow,fLock) \
  2729.             SQLSetPos(hstmt,irow,SQL_REFRESH,fLock)
  2730.     #define SQL_UPDATE_RECORD(hstmt,irow) \
  2731.             SQLSetPos(hstmt,irow,SQL_UPDATE,SQL_LOCK_NO_CHANGE)
  2732.     #define SQL_DELETE_RECORD(hstmt,irow) \
  2733.             SQLSetPos(hstmt,irow,SQL_DELETE,SQL_LOCK_NO_CHANGE)
  2734.     #define SQL_ADD_RECORD(hstmt,irow) \
  2735.             SQLSetPos(hstmt,irow,SQL_ADD,SQL_LOCK_NO_CHANGE)
  2736.     #define SQL_ODBC_KEYWORDS \
  2737. "ABSOLUTE,ACTION,ADA,ADD,ALL,ALLOCATE,ALTER,AND,ANY,ARE,AS,"\
  2738. "ASC,ASSERTION,AT,AUTHORIZATION,AVG,"\
  2739. "BEGIN,BETWEEN,BIT,BIT_LENGTH,BOTH,BY,CASCADE,CASCADED,CASE,CAST,CATALOG,"\
  2740. "CHAR,CHAR_LENGTH,CHARACTER,CHARACTER_LENGTH,CHECK,CLOSE,COALESCE,"\
  2741. "COLLATE,COLLATION,COLUMN,COMMIT,CONNECT,CONNECTION,CONSTRAINT,"\
  2742. "CONSTRAINTS,CONTINUE,CONVERT,CORRESPONDING,COUNT,CREATE,CROSS,CURRENT,"\
  2743. "CURRENT_DATE,CURRENT_TIME,CURRENT_TIMESTAMP,CURRENT_USER,CURSOR,"\
  2744. "DATE,DAY,DEALLOCATE,DEC,DECIMAL,DECLARE,DEFAULT,DEFERRABLE,"\
  2745. "DEFERRED,DELETE,DESC,DESCRIBE,DESCRIPTOR,DIAGNOSTICS,DISCONNECT,"\
  2746. "DISTINCT,DOMAIN,DOUBLE,DROP,"\
  2747. "ELSE,END,END-EXEC,ESCAPE,EXCEPT,EXCEPTION,EXEC,EXECUTE,"\
  2748. "EXISTS,EXTERNAL,EXTRACT,"\
  2749. "FALSE,FETCH,FIRST,FLOAT,FOR,FOREIGN,FORTRAN,FOUND,FROM,FULL,"\
  2750. "GET,GLOBAL,GO,GOTO,GRANT,GROUP,HAVING,HOUR,"\
  2751. "IDENTITY,IMMEDIATE,IN,INCLUDE,INDEX,INDICATOR,INITIALLY,INNER,"\
  2752. "INPUT,INSENSITIVE,INSERT,INT,INTEGER,INTERSECT,INTERVAL,INTO,IS,ISOLATION,"\
  2753. "JOIN,KEY,LANGUAGE,LAST,LEADING,LEFT,LEVEL,LIKE,LOCAL,LOWER,"\
  2754. "MATCH,MAX,MIN,MINUTE,MODULE,MONTH,"\
  2755. "NAMES,NATIONAL,NATURAL,NCHAR,NEXT,NO,NONE,NOT,NULL,NULLIF,NUMERIC,"\
  2756. "OCTET_LENGTH,OF,ON,ONLY,OPEN,OPTION,OR,ORDER,OUTER,OUTPUT,OVERLAPS,"\
  2757. "PAD,PARTIAL,PASCAL,PLI,POSITION,PRECISION,PREPARE,PRESERVE,"\
  2758. "PRIMARY,PRIOR,PRIVILEGES,PROCEDURE,PUBLIC,"\
  2759. "READ,REAL,REFERENCES,RELATIVE,RESTRICT,REVOKE,RIGHT,ROLLBACK,ROWS"\
  2760. "SCHEMA,SCROLL,SECOND,SECTION,SELECT,SESSION,SESSION_USER,SET,SIZE,"\
  2761. "SMALLINT,SOME,SPACE,SQL,SQLCA,SQLCODE,SQLERROR,SQLSTATE,SQLWARNING,"\
  2762. "SUBSTRING,SUM,SYSTEM_USER,"\
  2763. "TABLE,TEMPORARY,THEN,TIME,TIMESTAMP,TIMEZONE_HOUR,TIMEZONE_MINUTE,"\
  2764. "TO,TRAILING,TRANSACTION,TRANSLATE,TRANSLATION,TRIM,TRUE,"\
  2765. "UNION,UNIQUE,UNKNOWN,UPDATE,UPPER,USAGE,USER,USING,"\
  2766. "VALUE,VALUES,VARCHAR,VARYING,VIEW,WHEN,WHENEVER,WHERE,WITH,WORK,WRITE,"\
  2767. "YEAR,ZONE"
  2768. #endif /* ODBCVER >= 0x0200 */
  2769.  
  2770. SQLRETURN ODBC_API SQLSetPos(        /* Level 2 */
  2771.     SQLHSTMT        hstmt,
  2772.     SQLUSMALLINT    irow,        /* 1..n */
  2773.     SQLUSMALLINT    fRefresh,    /* TRUE or FALSE */
  2774.     SQLUSMALLINT    fLock );    /* TRUE or FALSE */
  2775.  
  2776. enum enumSQLConcurrency {
  2777.     SQL_CONCUR_READ_ONLY    = 1,
  2778.     SQL_CONCUR_LOCK,
  2779.     SQL_CONCUR_ROWVER,
  2780.     SQL_CONCUR_VALUES
  2781. };
  2782.  
  2783. #define SQL_CONCUR_TIMESTAMP    SQL_CONCUR_ROWVER
  2784.  
  2785. #if (ODBCVER >= 0x0200)
  2786.  
  2787. enum enumCursorType {
  2788.     SQL_CURSOR_FORWARD_ONLY    = 0UL,
  2789.     SQL_CURSOR_KEYSET_DRIVEN    = 1UL,
  2790.     SQL_CURSOR_DYNAMIC        = 2UL,
  2791.     SQL_CURSOR_STATIC        = 3UL
  2792. };
  2793.  
  2794. enum enumSimCursor {
  2795.     SQL_SC_NON_UNIQUE        = 0UL,
  2796.     SQL_SC_TRY_UNIQUE        = 1UL,
  2797.     SQL_SC_UNIQUE        = 2UL
  2798. };
  2799.  
  2800. enum enumRetrieveData {
  2801.     SQL_RD_OFF            = 0UL,
  2802.     SQL_RD_ON            = 1UL
  2803. };
  2804.  
  2805. enum enumUseBookmarks {
  2806.     SQL_UB_OFF            = 0UL,
  2807.     SQL_UB_ON            = 1UL
  2808.     #if (ODBCVER >= 0x0300)
  2809.     ,
  2810.     SQL_UB_FIXED        = 1UL,
  2811.     SQL_UB_VARIABLE        = 2UL
  2812.     #endif /* ODBCVER >= 0x0300 */
  2813. };
  2814.  
  2815. /* Special values for certain options  */
  2816. #define SQL_CONCUR_DEFAULT        SQL_CONCUR_READ_ONLY
  2817. #define SQL_CURSOR_TYPE_DEFAULT        SQL_CURSOR_FORWARD_ONLY
  2818. #define SQL_ROWSET_SIZE_DEFAULT        1UL
  2819. #define SQL_KEYSET_SIZE_DEFAULT        0UL
  2820. #define    SQL_RD_DEFAULT            SQL_RD_ON
  2821. #define    SQL_UB_DEFAULT            SQL_UB_OFF
  2822.  
  2823. #endif /* ODBCVER >= 0x0200 */
  2824.  
  2825. enum enumSQLKeySet {
  2826.     SQL_SCROLL_FORWARD_ONLY    = 0L,    /* SQL_CURSOR_FORWARD_ONLY */
  2827.     SQL_SCROLL_KEYSET_DRIVEN    = -1L,    /* SQL_CURSOR_KEYSET_DRIVEN */
  2828.     SQL_SCROLL_DYNAMIC        = -2L    /* SQL_CURSOR_DYNAMIC */
  2829.     #if (ODBCVER >= 0x0200)
  2830.     ,
  2831.     SQL_SCROLL_STATIC        = -3L    /* SQL_CURSOR_STATIC */
  2832.     #endif /* ODBCVER >= 0x0200 */
  2833. };
  2834.  
  2835. /* Use SQLSetStmtOption */
  2836. SQLRETURN ODBC_API SQLSetScrollOptions(    /* Level 2 */
  2837.     SQLHSTMT        hstmt,
  2838.     SQLUSMALLINT    fConcurrency,    /* enumSQLConcurrency */
  2839.     SQLINTEGER        crowKeySet,    /* number or enumSQLKeySet */
  2840.     SQLUSMALLINT    crowRowSet );    /* number of rows */
  2841.  
  2842. SQLRETURN ODBC_API SQLGetCursorName(    /* CORE */
  2843.     SQLHSTMT            StatementHandle,
  2844.     SQLCHAR ODBCFAR *        CursorName,
  2845.     SQLSMALLINT            BufferLength,
  2846.     SQLSMALLINT ODBCFAR *    NameLength );
  2847.  
  2848. SQLRETURN ODBC_API SQLGetData(            /* Level 1 */
  2849.     SQLHSTMT            StatementHandle,
  2850.     SQLUSMALLINT        ColumnNumber,    /* 1..n */
  2851.     SQLSMALLINT            TargetType,    /* SQL_C_... */
  2852.     SQLPOINTER            TargetValue,
  2853.     SQLINTEGER            BufferLength,
  2854.     SQLINTEGER ODBCFAR *    StrLen_or_Ind );
  2855.  
  2856. SQLRETURN ODBC_API SQLNumResultCols(    /* CORE */
  2857.     SQLHSTMT            StatementHandle,
  2858.     SQLSMALLINT ODBCFAR *    ColumnCount );
  2859.  
  2860. SQLRETURN ODBC_API SQLRowCount(        /* CORE */
  2861.     SQLHSTMT            StatementHandle,
  2862.     SQLINTEGER ODBCFAR *    RowCount );
  2863.  
  2864. SQLRETURN ODBC_API SQLSetCursorName(    /* CORE */
  2865.     SQLHSTMT        StatementHandle,
  2866.     SQLCHAR ODBCFAR *    CursorName,
  2867.     SQLSMALLINT        NameLength );
  2868.  
  2869. /* Parameters */
  2870.  
  2871. SQLRETURN ODBC_API SQLNumParams(        /* Level 2 */
  2872.     SQLHSTMT            hstmt,
  2873.     SQLSMALLINT ODBCFAR *    pcpar );
  2874.  
  2875. SQLRETURN ODBC_API SQLDescribeParam(        /* Level 2 */
  2876.     SQLHSTMT            hstmt,
  2877.     SQLUSMALLINT        ipar,        /* 1..n */
  2878.     SQLSMALLINT ODBCFAR *    pfSqlType,    /* enumSQLTYPE */
  2879.     SQLUINTEGER ODBCFAR *    pcbColDef,
  2880.     SQLSMALLINT ODBCFAR *    pibScale,
  2881.     SQLSMALLINT ODBCFAR *    pfNullable );    /* enumSQLNullable */
  2882.  
  2883. #if (ODBCVER >= 0x0300)
  2884. SQLRETURN ODBC_API SQLBindParam(
  2885.     SQLHSTMT            StatementHandle,
  2886.     SQLUSMALLINT        ParameterNumber,
  2887.     SQLSMALLINT            ValueType,
  2888.     SQLSMALLINT            ParameterType,
  2889.     SQLUINTEGER            LengthPrecision,
  2890.     SQLSMALLINT            ParameterScale,
  2891.     SQLPOINTER            ParameterValue,
  2892.     SQLINTEGER ODBCFAR *    StrLen_or_Ind );
  2893. #endif /* ODBCVER >= 0x0300 */
  2894.  
  2895. #if (ODBCVER >= 0x0200)
  2896. #define SQL_LEN_DATA_AT_EXEC_OFFSET    (-100)
  2897. #define SQL_LEN_DATA_AT_EXEC(length)    (-length+SQL_LEN_DATA_AT_EXEC_OFFSET)
  2898. #define SQL_LEN_BINARY_ATTR_OFFSET    (-100)
  2899. #define SQL_LEN_BINARY_ATTR(length)    (-(length)+SQL_LEN_BINARY_ATTR_OFFSET)
  2900.  
  2901. SQLRETURN ODBC_API SQLBindParameter(
  2902.     SQLHSTMT            hstmt,
  2903.     SQLUSMALLINT        ipar,
  2904.     SQLSMALLINT            fParamType,
  2905.     SQLSMALLINT            fCType,
  2906.     SQLSMALLINT            fSqlType,
  2907.     SQLUINTEGER            cbColDef,
  2908.     SQLSMALLINT            ibScale,
  2909.     SQLPOINTER            rgbValue,
  2910.     SQLINTEGER            cbValueMax,
  2911.     SQLINTEGER ODBCFAR *    pcbValue );
  2912.     
  2913. #endif /* ODBCVER >= 0x0200 */
  2914.  
  2915. /* Use SQLBindParameter */
  2916. SQLRETURN ODBC_API SQLSetParam(            /* CORE */
  2917.     SQLHSTMT            StatementHandle,
  2918.     SQLUSMALLINT        ParameterNumber,
  2919.     SQLSMALLINT            ValueType,
  2920.     SQLSMALLINT            ParameterType,    /* enumSQLTYPE */
  2921.     SQLUINTEGER            LengthPrecision,
  2922.     SQLSMALLINT            ParameterScale,
  2923.     SQLPOINTER            ParameterValue,
  2924.     SQLINTEGER ODBCFAR *    StrLen_or_Ind );
  2925.  
  2926. SQLRETURN ODBC_API SQLParamData(        /* Level 1 */
  2927.     SQLHSTMT            StatementHandle,
  2928.     SQLPOINTER ODBCFAR *    Value );    /* returns rgbValue from SQLSetParam */
  2929.  
  2930. SQLRETURN ODBC_API SQLPutData(        /* Level 1 */
  2931.     SQLHSTMT        StatementHandle,
  2932.     SQLPOINTER        Data,        /* Note: type set by SQLSetParam */
  2933.     SQLINTEGER        StrLen_or_Ind );
  2934.  
  2935. SQLRETURN ODBC_API SQLMoreResults(    /* Level 2 */
  2936.     SQLHSTMT        hstmt );
  2937.  
  2938. SQLRETURN ODBC_API SQLParamOptions(    /* Level 2 */
  2939.     SQLHSTMT            hstmt,
  2940.     SQLUINTEGER            crow,
  2941.     SQLUINTEGER ODBCFAR *    pirow );
  2942.  
  2943. /* Catalog information */
  2944.  
  2945. SQLRETURN ODBC_API SQLColumnPrivileges(    /* Level 2 */
  2946.     SQLHSTMT        hstmt,
  2947.     SQLCHAR ODBCFAR *    szCatalogName,
  2948.     SQLSMALLINT        cbCatalogName,
  2949.     SQLCHAR ODBCFAR *    szSchemaName,
  2950.     SQLSMALLINT        cbSchemaName,
  2951.     SQLCHAR ODBCFAR *    szTableName,
  2952.     SQLSMALLINT        cbTableName,
  2953.     SQLCHAR ODBCFAR *    szColumnName,
  2954.     SQLSMALLINT        cbColumnName );
  2955.  
  2956. SQLRETURN ODBC_API SQLTablePrivileges(    /* Level 2 */
  2957.     SQLHSTMT        hstmt,
  2958.     SQLCHAR ODBCFAR *    szCatalogName,
  2959.     SQLSMALLINT        cbCatalogName,
  2960.     SQLCHAR ODBCFAR *    szSchemaName,
  2961.     SQLSMALLINT        cbSchemaName,
  2962.     SQLCHAR ODBCFAR *    szTableName,
  2963.     SQLSMALLINT        cbTableName );
  2964.  
  2965. SQLRETURN ODBC_API SQLColumns(        /* Level 1 */
  2966.     SQLHSTMT        StatementHandle,
  2967.     SQLCHAR ODBCFAR *    CatalogName,
  2968.     SQLSMALLINT        NameLength1,
  2969.     SQLCHAR ODBCFAR *    SchemaName,
  2970.     SQLSMALLINT        NameLength2,
  2971.     SQLCHAR ODBCFAR *    TableName,
  2972.     SQLSMALLINT        NameLength3,
  2973.     SQLCHAR ODBCFAR *    ColumnName,
  2974.     SQLSMALLINT        NameLength4 );
  2975.  
  2976. enum enumSQLForeignKeyAction {    /* in SQLForeignKeys result set */
  2977.     SQL_CASCADE,
  2978.     SQL_RESTRICT,
  2979.     SQL_SET_NULL
  2980.     #if (ODBCVER >= 0x0250)
  2981.     ,
  2982.     SQL_NO_ACTION,
  2983.     SQL_SET_DEFAULT
  2984.     #if (ODBCVER >= 0x0300)
  2985.     ,
  2986.     SQL_INITIALLY_DEFERRED,
  2987.     SQL_INITIALLY_IMMEDIATE
  2988.     #endif /* ODBCVER >= 0x0300 */
  2989.     #endif /* ODBCVER >= 0x0250 */
  2990. };
  2991.  
  2992. SQLRETURN ODBC_API SQLForeignKeys(    /* Level 2 */
  2993.     SQLHSTMT        hstmt,
  2994.     SQLCHAR ODBCFAR *    szPkCatalogName,
  2995.     SQLSMALLINT        cbPkCatalogName,
  2996.     SQLCHAR ODBCFAR *    szPkSchemaName,
  2997.     SQLSMALLINT        cbPkSchemaName,
  2998.     SQLCHAR ODBCFAR *    szPkTableName,
  2999.     SQLSMALLINT        cbPkTableName,
  3000.     SQLCHAR ODBCFAR *    szFkCatalogName,
  3001.     SQLSMALLINT        cbFkCatalogName,
  3002.     SQLCHAR ODBCFAR *    szFkSchemaName,
  3003.     SQLSMALLINT        cbFkSchemaName,
  3004.     SQLCHAR ODBCFAR *    szFkTableName,
  3005.     SQLSMALLINT        cbFkTableName );
  3006.  
  3007. #if (ODBCVER >= 0x0300)
  3008. #define    SQL_COL_PRED_CHAR    SQL_LIKE_ONLY
  3009. #define    SQL_COL_PRED_BASIC    SQL_ALL_EXCEPT_LIKE
  3010. #endif /* ODBCVER >= 0x0300 */
  3011.  
  3012. SQLRETURN ODBC_API SQLGetTypeInfo(    /* Level 1 */
  3013.     SQLHSTMT        StatementHandle,
  3014.     SQLSMALLINT        DateType );    /* enumSQLTYPE or SQL_ALL_TYPES */
  3015.  
  3016. SQLRETURN ODBC_API SQLPrimaryKeys(    /* Level 2 */
  3017.     SQLHSTMT        hstmt,
  3018.     SQLCHAR ODBCFAR *    szCatalogName,
  3019.     SQLSMALLINT        cbCatalogName,
  3020.     SQLCHAR ODBCFAR *    szSchemaName,
  3021.     SQLSMALLINT        cbSchemaName,
  3022.     SQLCHAR ODBCFAR *    szTableName,
  3023.     SQLSMALLINT        cbTableName );
  3024.  
  3025. enum enumSQLProcColUse {    /* in SQLProcedureColumns result set */
  3026.     SQL_PARAM_TYPE_UNKNOWN,
  3027.     SQL_PARAM_INPUT,
  3028.     SQL_PARAM_INPUT_OUTPUT,
  3029.     SQL_RESULT_COL
  3030.     #if (ODBCVER >= 0x0200)
  3031.     ,
  3032.     SQL_PARAM_OUTPUT,
  3033.     SQL_RETURN_VALUE
  3034.     #endif /* ODBCVER >= 0x0200 */
  3035. };
  3036.  
  3037. #define SQL_PARAM_TYPE_DEFAULT     SQL_PARAM_INPUT_OUTPUT
  3038. #define    SQL_SETPARAM_VALUE_MAX    (-1L)
  3039.  
  3040. SQLRETURN ODBC_API SQLProcedureColumns(    /* Level 2 */
  3041.     SQLHSTMT        hstmt,
  3042.     SQLCHAR ODBCFAR *    szCatalogName,
  3043.     SQLSMALLINT        cbCatalogName,
  3044.     SQLCHAR ODBCFAR *    szSchemaName,
  3045.     SQLSMALLINT        cbSchemaName,
  3046.     SQLCHAR ODBCFAR *    szProcName,
  3047.     SQLSMALLINT        cbProcName,
  3048.     SQLCHAR ODBCFAR *    szColumnName,
  3049.     SQLSMALLINT        cbColumnName );
  3050.  
  3051. SQLRETURN ODBC_API SQLProcedures(    /* Level 2 */
  3052.     SQLHSTMT        hstmt,
  3053.     SQLCHAR ODBCFAR *    szCatalogName,
  3054.     SQLSMALLINT        cbCatalogName,
  3055.     SQLCHAR ODBCFAR *    szSchemaName,
  3056.     SQLSMALLINT        cbSchemaName,
  3057.     SQLCHAR ODBCFAR *    szProcName,
  3058.     SQLSMALLINT        cbProcName );
  3059.  
  3060. enum enumSQLSpecialType {
  3061.     SQL_BEST_ROWID    = 1,
  3062.     #if (ODBCVER >= 0x0300)
  3063.     SQL_ROW_IDENTIFIER    = 1,        /* Reserved value */
  3064.     #endif /* ODBCVER >= 0x0300 */
  3065.     SQL_ROWVER
  3066. };
  3067.  
  3068. enum enumSQLScope {
  3069.     SQL_SCOPE_CURROW,
  3070.     SQL_SCOPE_TRANSACTION,
  3071.     SQL_SCOPE_SESSION
  3072. };
  3073.  
  3074. SQLRETURN ODBC_API SQLSpecialColumns(    /* Level 1 */
  3075.     SQLHSTMT        StatementHandle,
  3076.     SQLUSMALLINT    IdentifierType,    /* enumSQLSpecialType */
  3077.     SQLCHAR *        CatalogName,
  3078.     SQLSMALLINT        NameLength1,
  3079.     SQLCHAR *        SchemaName,
  3080.     SQLSMALLINT        NameLength2,
  3081.     SQLCHAR *        TableName,
  3082.     SQLSMALLINT        NameLength3,
  3083.     SQLUSMALLINT    Scope,        /* enumSQLScope */
  3084.     SQLUSMALLINT    Nullable );    /* enumSQLNullable */
  3085.  
  3086. enum enumSQLUnique {
  3087.     SQL_INDEX_UNIQUE,
  3088.     SQL_INDEX_ALL
  3089. };
  3090.  
  3091. enum enumSQLAccuracy {
  3092.     SQL_QUICK,
  3093.     SQL_ENSURE
  3094. };
  3095.  
  3096. enum enumSQLTableStat {
  3097.     SQL_TABLE_STAT,
  3098.     SQL_INDEX_CLUSTERED,
  3099.     SQL_INDEX_HASHED,
  3100.     SQL_INDEX_OTHER
  3101. };
  3102.  
  3103. #if (ODBCVER >= 0x0200)
  3104. enum enumProcType {
  3105.     SQL_PT_UNKNOWN,
  3106.     SQL_PT_PROCEDURE,
  3107.     SQL_PT_FUNCTION
  3108. };
  3109.  
  3110. enum enumPseudoCol {
  3111.     SQL_PC_UNKNOWN,
  3112.     SQL_PC_NOT_PSEUDO,
  3113.     #if (ODBCVER >= 0x0300)
  3114.     SQL_PC_NON_PSEUDO    = 1,
  3115.     #endif /* ODBCVER >= 0x0300 */
  3116.     SQL_PC_PSEUDO
  3117. };
  3118.  
  3119. #define SQL_PC_NON_PSEUDO    SQL_PC_NOT_PSEUDO
  3120.  
  3121. #if (ODBCVER >= 0x0300)
  3122. #define SQL_ALL_CATALOGS    "%"
  3123. #define SQL_ALL_SCHEMAS        "%"
  3124. #define SQL_ALL_TABLE_TYPES    "%"
  3125. #endif /* ODBCVER >= 0x0300 */
  3126.  
  3127. #endif /* ODBCVER >= 0x0200 */
  3128.  
  3129. SQLRETURN ODBC_API SQLStatistics(    /* Level 1 */
  3130.     SQLHSTMT        StatementHandle,
  3131.     SQLCHAR *        CatalogName,
  3132.     SQLSMALLINT        NameLength1,
  3133.     SQLCHAR *        SchemaName,
  3134.     SQLSMALLINT        NameLength2,
  3135.     SQLCHAR *        TableName,
  3136.     SQLSMALLINT        NameLength3,
  3137.     SQLUSMALLINT    Unique,        /* enumSQLUnique */
  3138.     SQLUSMALLINT    Reserved );    /* enumSQLAccuracy */
  3139.  
  3140. SQLRETURN ODBC_API SQLTables(        /* Level 1 */
  3141.     SQLHSTMT        StatementHandle,
  3142.     SQLCHAR *        CatalogName,
  3143.     SQLSMALLINT        NameLength1,
  3144.     SQLCHAR *        SchemaName,
  3145.     SQLSMALLINT        NameLength2,
  3146.     SQLCHAR *        TableName,
  3147.     SQLSMALLINT        NameLength3,
  3148.     SQLCHAR *        TableType,    /* string 'TABLE', 'VIEW' */
  3149.     SQLSMALLINT        NameLength4 );
  3150.  
  3151. #ifdef __cplusplus
  3152. };
  3153. #endif /* __cplusplus */
  3154. #endif /* _ODBC_H_INCLUDED */
  3155.