home *** CD-ROM | disk | FTP | other *** search
/ Chip 1997 October / Chip_1997-10_cd.bin / tema / sybase / powerj / hpp.z / odbc.h < prev    next >
C/C++ Source or Header  |  1996-06-04  |  45KB  |  1,666 lines

  1.  /****************************************************************
  2.  *       Copyright (C) 1988-1993, by WATCOM International Corp.  *
  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.  *       WATCOM International Corp.                              *
  9.  ****************************************************************/
  10.  
  11. #ifndef __ODBC_H_INCLUDED
  12. #define __ODBC_H_INCLUDED
  13. #ifdef __cplusplus
  14. extern "C" {
  15. #endif
  16.  
  17. /*    ODBC.H
  18.     Definitions for using ODBC functions
  19. */
  20.  
  21. /* Platform-specific definitions */
  22.  
  23. #ifndef ODBC_DOS
  24.  #ifndef ODBC_DOS32
  25.   #ifndef ODBC_MAC
  26.    #ifndef ODBC_OS2
  27.     #ifndef ODBC_OS216
  28.      #ifndef ODBC_QNX
  29.       #ifndef ODBC_WINNT
  30.        #ifndef ODBC_WIN32
  31.     #ifndef ODBC_WIN
  32.      /* Default platform is Microsoft Windows */
  33.      #ifdef __WINDOWS_386__
  34.       // Must be WATCOM C 32 bit Windows
  35.       #define ODBC_WIN32
  36.      #else
  37.       #define ODBC_WIN
  38.      #endif
  39.         #endif
  40.        #endif
  41.       #endif
  42.      #endif
  43.     #endif
  44.    #endif
  45.   #endif
  46.  #endif
  47. #endif
  48. #ifdef ODBC_DOS
  49.     #define ODBC_API
  50.     #define ODBCFAR
  51. #endif
  52. #ifdef ODBC_DOS32
  53.     #define ODBC_API
  54.     #define ODBCFAR
  55. #endif
  56. #ifdef ODBC_MAC
  57.     #define ODBC_API        pascal
  58.     #define ODBCFAR
  59. #endif
  60. #ifdef ODBC_OS2
  61.     #ifdef __BORLANDC__
  62.     #define ODBC_API    __syscall
  63.     #else
  64.     #define ODBC_API    _System
  65.     #endif
  66.     #define ODBCFAR
  67. #endif
  68. #ifdef ODBC_QNX
  69.     #define ODBC_API
  70.     #define ODBCFAR
  71. #endif
  72. #ifdef ODBC_WINNT
  73.     #define ODBC_API    __stdcall
  74.     #define ODBCFAR
  75. #endif
  76. #ifdef ODBC_WIN32
  77.     #define ODBC_API
  78.     #define ODBCFAR
  79. #endif
  80. #ifdef ODBC_WIN
  81.     #define ODBC_API    far pascal
  82.     #define ODBCFAR    far
  83. #endif
  84.  
  85. #ifndef ODBCVER
  86. #define ODBCVER        0x0201
  87. #endif
  88.  
  89. /* RETCODES */
  90.  
  91. #if !defined( __SQL )
  92.  
  93. enum enumRETCODE {
  94.     SQL_SUCCESS        = 0,
  95.     SQL_SUCCESS_WITH_INFO,
  96.     SQL_STILL_EXECUTING,
  97.     SQL_NEED_DATA    = 99,
  98.     SQL_NO_DATA_FOUND,
  99.     SQL_ERROR        = -1,
  100.     SQL_INVALID_HANDLE    = -2
  101. };
  102.  
  103. typedef signed short    RETCODE;
  104.  
  105. /* SQL Types */
  106.  
  107. enum enumSQLTYPE {
  108.     SQL_TYPE_NULL    = 0,
  109.     /* ANSI numbering */
  110.     SQL_CHAR,
  111.     SQL_NUMERIC,
  112.     SQL_DECIMAL,
  113.     SQL_INTEGER,
  114.     SQL_SMALLINT,
  115.     SQL_FLOAT,
  116.     SQL_REAL,
  117.     SQL_DOUBLE,
  118.     SQL_DATE,
  119.     SQL_TIME,
  120.     SQL_TIMESTAMP,
  121.     SQL_VARCHAR,
  122.     /* ODBC extensions */
  123.     SQL_BIT        = -7,
  124.     SQL_TINYINT,
  125.     SQL_BIGINT,
  126.     SQL_LONGVARBINARY,
  127.     SQL_VARBINARY,
  128.     SQL_BINARY,
  129.     SQL_LONGVARCHAR
  130. };
  131.  
  132. #define SQL_TYPE_DRIVER_START    (-80)
  133. #define SQL_TYPE_MIN        SQL_BIT
  134. #define SQL_TYPE_MAX        SQL_VARCHAR
  135. #define SQL_ALL_TYPES        SQL_TYPE_NULL
  136.  
  137. #if (ODBCVER >= 0x0200)
  138.     #define SQL_SIGNED_OFFSET    (-20)
  139.     #define SQL_UNSIGNED_OFFSET    (-22)
  140. #endif
  141.  
  142. /* C types -- defined in terms of corresponding SQL types */
  143.  
  144. #define SQL_C_CHAR    SQL_CHAR
  145. #define SQL_C_LONG    SQL_INTEGER
  146. #define SQL_C_SHORT    SQL_SMALLINT
  147. #define SQL_C_FLOAT    SQL_REAL
  148. #define SQL_C_DOUBLE    SQL_DOUBLE
  149. #define SQL_C_DEFAULT    99
  150.  
  151. #endif /* !defined( __SQL ) */
  152.  
  153. #if !defined( __SQLEXT )
  154.  
  155. #define SQL_C_DATE    SQL_DATE
  156. #define SQL_C_TIME    SQL_TIME
  157. #define SQL_C_TIMESTAMP    SQL_TIMESTAMP
  158. #define SQL_C_BINARY    SQL_BINARY
  159. #define SQL_C_BIT    SQL_BIT
  160. #define SQL_C_TINYINT    SQL_TINYINT
  161. #if (ODBCVER >= 0x0200)
  162.     #define SQL_C_SLONG        SQL_C_LONG+SQL_SIGNED_OFFSET
  163.     #define SQL_C_SSHORT    SQL_C_SHORT+SQL_SIGNED_OFFSET
  164.     #define SQL_C_STINYINT    SQL_TINYINT+SQL_SIGNED_OFFSET
  165.     #define SQL_C_ULONG        SQL_C_LONG+SQL_UNSIGNED_OFFSET
  166.     #define SQL_C_USHORT    SQL_C_SHORT+SQL_UNSIGNED_OFFSET
  167.     #define SQL_C_UTINYINT    SQL_TINYINT+SQL_UNSIGNED_OFFSET
  168.     #define SQL_C_BOOKMARK    SQL_C_ULONG
  169. #endif
  170.  
  171. #endif /* !defined( __SQLEXT ) */
  172.  
  173. /* Portable C data types */
  174.  
  175. #if !defined( __SQL )
  176.  
  177. #if !defined(OS2DEF_INCLUDED) && !defined(_WINDEF_)
  178. typedef unsigned char    UCHAR;
  179. #endif
  180. typedef signed char    SCHAR;
  181. typedef unsigned short    UWORD;
  182. typedef signed short    SWORD;
  183. typedef unsigned long    UDWORD;
  184. typedef signed long    SDWORD;
  185. typedef double        SDOUBLE;
  186. typedef long double    LDOUBLE;
  187. typedef float        SFLOAT;
  188. typedef void ODBCFAR *    PTR;
  189.  
  190. /* Define some common things often found in WINDOWS.H */
  191.  
  192. #if defined( MAC )
  193.     #if defined( MACODBC )  &&  MACODBC
  194.     // ODBC 2.0 Driver Manager and SDK
  195.     // BOOL is now defined in "win2mac.h" from ODBC 2.0 SDK
  196.     #elif defined( USE_ODBC_DRIVER )
  197.     typedef unsigned short        BOOL;
  198.     #else
  199.     typedef int            BOOL;
  200.     #endif
  201. #elif !defined(_INC_WINDOWS) && !defined(OS2DEF_INCLUDED) && !defined(_WINDEF_)
  202.     typedef int            BOOL;
  203. #endif
  204.  
  205. /* Handle types */
  206.  
  207. #if defined( MAC )  &&  defined( USE_ODBC_DRIVER )
  208.     typedef struct ENV **  HENV;
  209.     typedef struct DBC **  HDBC;
  210.     typedef struct STMT ** HSTMT;
  211. #else
  212.     typedef void ODBCFAR * HENV;
  213.     typedef void ODBCFAR * HDBC;
  214.     typedef void ODBCFAR * HSTMT;
  215. #endif
  216.  
  217. #define SQL_NULL_HENV    0
  218. #define SQL_NULL_HDBC    0
  219. #define SQL_NULL_HSTMT    0
  220.  
  221. /* Special length values */
  222.  
  223. enum enumLENGTH {
  224.     SQL_IGNORE = (-6),
  225.     SQL_DEFAULT_PARAM,
  226.     SQL_NO_TOTAL,
  227.     SQL_NTS,
  228.     SQL_DATA_AT_EXEC,
  229.     SQL_NULL_DATA
  230. };
  231.  
  232. /* Miscellaneous constants */
  233. #if (ODBCVER >= 0x0200)
  234.     #define SQL_SPEC_MAJOR        2
  235.     #define SQL_SPEC_MINOR        1
  236.     #define SQL_SPEC_STRING        "02.01"
  237. #endif /* ODBCVER >= 0x0200 */
  238. #define SQLSTATE_SIZE            5
  239. #define    SQL_MAX_MESSAGE_LENGTH        512
  240. #define SQL_MAX_DSN_LENGTH        32
  241. #define SQL_MAX_OPTION_STRING_LENGTH    256
  242.  
  243. #endif /* !defined( __SQL ) */
  244.  
  245. /* Define some common things often found in WINDOWS.H */
  246.  
  247. #if !defined( _WSQLODBC_H )
  248.     #if defined( MAC )
  249.       #if defined( MACODBC )  &&  MACODBC
  250.     // HWND is now defined in "win2mac.h" from Mac ODBC SDK
  251.       #else
  252.     typedef struct GrafPort *    HWND;
  253.       #endif
  254.     #elif !defined(_INC_WINDOWS) && !defined(OS2DEF_INCLUDED) && !defined(_WINDEF_)
  255.     // HWND is now defined in wdef.hpp
  256.     #endif
  257. #endif
  258.  
  259. #if !defined(TRUE)
  260. #define TRUE        1
  261. #endif
  262. #if !defined(FALSE)
  263. #define FALSE        0
  264. #endif
  265.  
  266. /* C structures */
  267.  
  268. #if !defined( __SQLEXT )
  269.  
  270. typedef struct tagDATE_STRUCT {
  271.     SWORD        year;
  272.     UWORD        month;
  273.     UWORD        day;
  274. } DATE_STRUCT;
  275.  
  276. typedef struct tagTIME_STRUCT {
  277.     UWORD        hour;
  278.     UWORD        minute;
  279.     UWORD        second;
  280. } TIME_STRUCT;
  281.  
  282. typedef struct tagTIMESTAMP_STRUCT {
  283.     SWORD        year;
  284.     UWORD        month;
  285.     UWORD        day;
  286.     UWORD        hour;
  287.     UWORD        minute;
  288.     UWORD        second;
  289.     UDWORD        fraction;
  290. } TIMESTAMP_STRUCT;
  291.  
  292. #if (ODBCVER >= 0x0200)
  293. typedef unsigned long int    BOOKMARK;
  294. #endif 
  295.  
  296. #endif /* !defined( __SQLEXT ) */
  297.  
  298. /* Values that may be defined elsewhere */
  299.  
  300. #ifndef NULL
  301. #define NULL        0
  302. #endif
  303.  
  304. #if !defined( __SQL )
  305.  
  306. /* API functions -- environment */
  307.  
  308. RETCODE ODBC_API SQLAllocEnv(        /* CORE */
  309.     HENV ODBCFAR *    phenv );
  310.  
  311. RETCODE ODBC_API SQLError(        /* CORE */
  312.     HENV        henv,
  313.     HDBC        hdbc,
  314.     HSTMT        hstmt,
  315.     UCHAR ODBCFAR *    szSqlState,    /* Always SQLSTATE_SIZE+1 bytes */
  316.     SDWORD ODBCFAR *    pfNativeError,
  317.     UCHAR ODBCFAR *    szErrorMsg,
  318.     SWORD        cbErrorMsgMax,
  319.     SWORD ODBCFAR *    pcbErrorMsg );
  320.  
  321. RETCODE ODBC_API SQLDataSources(    /* Level 2 */
  322.     HENV        henv,
  323.     UWORD        fDirection,    /* enumSQLFetchType */
  324.     UCHAR ODBCFAR *    szDSN,
  325.     SWORD        cbDSNMax,
  326.     SWORD ODBCFAR *    pcbDSN,
  327.     UCHAR ODBCFAR *    szDescription,
  328.     SWORD        cbDescriptionMax,
  329.     SWORD ODBCFAR *    pcbDescription );
  330.  
  331. RETCODE ODBC_API SQLFreeEnv(        /* CORE */
  332.     HENV        henv );
  333.  
  334. /* API functions -- connections */
  335.  
  336. RETCODE ODBC_API SQLAllocConnect(    /* CORE */
  337.     HENV        henv,
  338.     HDBC ODBCFAR *    phdbc );
  339.  
  340. RETCODE ODBC_API SQLConnect(        /* CORE */
  341.     HDBC        hdbc,
  342.     UCHAR ODBCFAR *    szDSN,
  343.     SWORD        cbDSN,
  344.     UCHAR ODBCFAR *    szUID,
  345.     SWORD        cbUID,
  346.     UCHAR ODBCFAR *    szAuthStr,
  347.     SWORD        cbAuthStr );
  348.  
  349. enum enumSQLMode {
  350.     SQL_MODE_READ_WRITE,
  351.     SQL_MODE_READ_ONLY
  352. };
  353.     
  354. enum enumSQLDriverConnect {
  355.     SQL_DRIVER_NOPROMPT,
  356.     SQL_DRIVER_COMPLETE,
  357.     SQL_DRIVER_PROMPT,
  358.     SQL_DRIVER_COMPLETE_REQUIRED
  359. };
  360.  
  361. RETCODE ODBC_API SQLDriverConnect(    /* Level 1 */
  362.     HDBC        hdbc,
  363.     HWND        hwnd,
  364.     UCHAR ODBCFAR *    szConnStrIn,    /* input connection string */
  365.     SWORD        cbConnStrIn,
  366.     UCHAR ODBCFAR *    szConnStrOut,
  367.     SWORD        cbConnStrOutMax,
  368.     SWORD ODBCFAR *    pcbConnStrOut,
  369.     UWORD        fDriverCompletion );    /* enumSQLDriverConnect */
  370.  
  371. RETCODE ODBC_API SQLBrowseConnect(    /* Level 2 */
  372.     HDBC        hdbc,
  373.     UCHAR ODBCFAR *    szConnStrIn,    /* input connection string */
  374.     SWORD        cbConnStrIn,
  375.     UCHAR ODBCFAR *    szConnStrOut,
  376.     SWORD        cbConnStrOutMax,
  377.     SWORD ODBCFAR *    pcbConnStrOut );
  378.  
  379. #if (ODBCVER >= 0x0200)
  380.  
  381. RETCODE ODBC_API SQLDrivers(
  382.     HENV        henv,
  383.     UWORD        fDirection,
  384.     UCHAR ODBCFAR *    *szDriverDesc,
  385.     SWORD        cbDriverDescMax,
  386.     SWORD ODBCFAR *    *pcbDriverDesc,
  387.     UCHAR ODBCFAR *    *szDriverAttributes,
  388.     SWORD        cbDrvrAttrMax,
  389.     SWORD ODBCFAR *    *pcbDrvrAttr );
  390. #endif
  391.  
  392. enum enumSQLOption {
  393.     /* Statement options (can also be used with connections) */
  394.     SQL_QUERY_TIMEOUT,
  395.     SQL_MAX_ROWS,
  396.     SQL_NOSCAN,
  397.     SQL_MAX_LENGTH,
  398.     SQL_ASYNC_ENABLE,
  399.     SQL_BIND_TYPE,
  400. #if (ODBCVER >= 0x0200)
  401.     SQL_CURSOR_TYPE,
  402.     SQL_CONCURRENCY,
  403.     SQL_KEYSET_SIZE,
  404.     SQL_ROWSET_SIZE,
  405.     SQL_SIMULATE_CURSOR,
  406.     SQL_RETRIEVE_DATA,
  407.     SQL_USE_BOOKMARKS,
  408.     SQL_GET_BOOKMARK,
  409.     SQL_ROW_NUMBER,
  410. #endif
  411.     /* Connect options */
  412.     SQL_ACCESS_MODE    = 101,
  413.     SQL_AUTOCOMMIT,
  414.     SQL_LOGIN_TIMEOUT,
  415.     SQL_OPT_TRACE,
  416.     SQL_OPT_TRACEFILE,
  417.     SQL_TRANSLATE_DLL,
  418.     SQL_TRANSLATE_OPTION,
  419.     SQL_TXN_ISOLATION,        /* enumSQLIsolation */
  420.     SQL_CURRENT_QUALIFIER,
  421. #if (ODBCVER >= 0x0200)
  422.     SQL_ODBC_CURSORS,
  423.     SQL_QUIET_MODE,
  424.     SQL_PACKET_SIZE,
  425. #endif
  426.     /* Driver specific options */
  427.     SQL_CONNECT_OPT_DRVR_START = 1000
  428. };
  429.  
  430. enum enumSQLIsolation {
  431.     SQL_TXN_READ_UNCOMMITTED    = 1,
  432.     SQL_TXN_READ_COMMITTED    = 2,
  433.     SQL_TXN_REPEATABLE_READ    = 4,
  434.     SQL_TXN_SERIALIZABLE    = 8,
  435.     SQL_TXN_VERSIONING        = 16
  436. };
  437.  
  438. enum enumNoScanOps {
  439.     SQL_NOSCAN_OFF,
  440.     SQL_NOSCAN_ON
  441. };
  442.  
  443. enum enumAsyncEnable {
  444.     SQL_ASYNC_ENABLE_OFF,
  445.     SQL_ASYNC_ENABLE_ON    
  446. };
  447.  
  448. enum enumAutoCommit {
  449.     SQL_AUTOCOMMIT_OFF,
  450.     SQL_AUTOCOMMIT_ON
  451. };
  452.  
  453. enum enumTraceOpt {
  454.     SQL_OPT_TRACE_OFF,
  455.     SQL_OPT_TRACE_ON
  456. };
  457.  
  458. #if (ODBCVER >= 0x0200)
  459.  
  460. enum enumODBCCursors {
  461.     SQL_CUR_USE_IF_NEEDED,
  462.     SQL_CUR_USE_ODBC,
  463.     SQL_CUR_USE_DRIVER
  464. };
  465.  
  466. #define SQL_CUR_USE_DEFAULT         SQL_CUR_USE_DRIVER
  467.  
  468. #endif
  469.  
  470. /* Special values for certain options  */
  471. #define SQL_QUERY_TIMEOUT_DEFAULT    0UL
  472. #define SQL_NOSCAN_DEFAULT        SQL_NOSCAN_OFF
  473. #define SQL_ASYNC_ENABLE_DEFAULT    SQL_ASYNC_ENABLE_OFF
  474. #define SQL_MAX_ROWS_DEFAULT        0UL
  475. #define SQL_MAX_LENGTH_DEFAULT        0UL
  476. #define SQL_BIND_BY_COLUMN         0UL
  477. #define SQL_MODE_DEFAULT        SQL_MODE_READ_WRITE
  478. #define SQL_AUTOCOMMIT_DEFAULT         SQL_AUTOCOMMIT_ON
  479. #define SQL_LOGIN_TIMEOUT_DEFAULT    15UL
  480. #define SQL_OPT_TRACE_DEFAULT         SQL_OPT_TRACE_OFF
  481. #define SQL_OPT_TRACE_FILE_DEFAULT    "\\SQL.LOG"
  482.  
  483.  
  484. RETCODE ODBC_API SQLGetConnectOption(    /* Level 1 */
  485.     HDBC        hdbc,
  486.     UWORD        fOption,    /* enumSQLOption */
  487.     PTR            pvParam );
  488.  
  489. RETCODE ODBC_API SQLSetConnectOption(    /* Level 1 */
  490.     HDBC        hdbc,
  491.     UWORD        fOption,    /* enumSQLOption */
  492.     UDWORD        vParam );
  493.  
  494. RETCODE ODBC_API SQLNativeSql(        /* Level 2 */
  495.     HDBC        hdbc,
  496.     UCHAR ODBCFAR *    szSqlStrIn,
  497.     SDWORD        cbSqlStrIn,
  498.     UCHAR ODBCFAR *    szSqlStr,
  499.     SDWORD        cbSqlStrMax,
  500.     SDWORD ODBCFAR *    pcbSqlStr );
  501.  
  502. enum enumSQLTransact {
  503.     SQL_COMMIT,
  504.     SQL_ROLLBACK
  505. };
  506.  
  507. RETCODE ODBC_API SQLTransact(        /* CORE */
  508.     HENV        henv,
  509.     HDBC        hdbc,
  510.     UWORD        fType );    /* enumSQLTransact */
  511.  
  512. RETCODE ODBC_API SQLDisconnect(        /* CORE */
  513.     HDBC        hdbc );
  514.  
  515. RETCODE ODBC_API SQLFreeConnect(    /* CORE */
  516.     HDBC        hdbc );
  517.  
  518. /* API functions -- driver information */
  519.  
  520. enum enumSQLFunctions {
  521.     /* CORE functions */
  522.     SQL_API_SQLALLOCCONNECT    = 1,
  523.     SQL_API_SQLALLOCENV,
  524.     SQL_API_SQLALLOCSTMT,
  525.     SQL_API_SQLBINDCOL,
  526.     SQL_API_SQLCANCEL,
  527.     SQL_API_SQLCOLATTRIBUTES,
  528.     SQL_API_SQLCONNECT,
  529.     SQL_API_SQLDESCRIBECOL,
  530.     SQL_API_SQLDISCONNECT,
  531.     SQL_API_SQLERROR,
  532.     SQL_API_SQLEXECDIRECT,
  533.     SQL_API_SQLEXECUTE,
  534.     SQL_API_SQLFETCH,
  535.     SQL_API_SQLFREECONNECT,
  536.     SQL_API_SQLFREEENV,
  537.     SQL_API_SQLFREESTMT,
  538.     SQL_API_SQLGETCURSORNAME,
  539.     SQL_API_SQLNUMRESULTCOLS,
  540.     SQL_API_SQLPREPARE,
  541.     SQL_API_SQLROWCOUNT,
  542.     SQL_API_SQLSETCURSORNAME,
  543.     SQL_API_SQLSETPARAM,
  544.     SQL_API_SQLTRANSACT,
  545.     SQL_API_END_OF_CORE,
  546.  
  547.     /* Level 1 functions */
  548.     SQL_API_SQLCOLUMNS    = 40,
  549.     SQL_API_SQLDRIVERCONNECT,
  550.     SQL_API_SQLGETCONNECTOPTION,
  551.     SQL_API_SQLGETDATA,
  552.     SQL_API_SQLGETFUNCTIONS,
  553.     SQL_API_SQLGETINFO,
  554.     SQL_API_SQLGETSTMTOPTION,
  555.     SQL_API_SQLGETTYPEINFO,
  556.     SQL_API_SQLPARAMDATA,
  557.     SQL_API_SQLPUTDATA,
  558.     SQL_API_SQLSETCONNECTOPTION,
  559.     SQL_API_SQLSETSTMTOPTION,
  560.     SQL_API_SQLSPECIALCOLUMNS,
  561.     SQL_API_SQLSTATISTICS,
  562.     SQL_API_SQLTABLES,
  563.  
  564.     /* Level 2 functions */
  565.     SQL_API_SQLBROWSECONNECT,
  566.     SQL_API_SQLCOLUMNPRIVILEGES,
  567.     SQL_API_SQLDATASOURCES,
  568.     SQL_API_SQLDESCRIBEPARAM,
  569.     SQL_API_SQLEXTENDEDFETCH,
  570.     SQL_API_SQLFOREIGNKEYS,
  571.     SQL_API_SQLMORERESULTS,
  572.     SQL_API_SQLNATIVESQL,
  573.     SQL_API_SQLNUMPARAMS,
  574.     SQL_API_SQLPARAMOPTIONS,
  575.     SQL_API_SQLPRIMARYKEYS,
  576.     SQL_API_SQLPROCEDURECOLUMNS,
  577.     SQL_API_SQLPROCEDURES,
  578.     SQL_API_SQLSETPOS,
  579.     SQL_API_SQLSETSCROLLOPTIONS,
  580.     SQL_API_SQLTABLEPRIVILEGES,
  581. #if (ODBCVER >= 0x0200)
  582.     SQL_API_SQLDRIVERS,
  583.     SQL_API_SQLBINDPARAMETER,
  584. #endif
  585.     SQL_API_END_OF_FUNCTIONS
  586. };
  587.  
  588. #define SQL_NUM_FUNCTIONS    (SQL_API_END_OF_CORE - 1)
  589. #define SQL_EXT_API_START    SQL_API_SQLCOLUMNS
  590. #define SQL_EXT_API_LAST    (SQL_API_END_OF_FUNCTIONS - 1)
  591.  
  592. #define SQL_NUM_EXTENSIONS    (SQL_API_END_OF_FUNCTIONS-SQL_EXT_API_START)
  593. #define SQL_API_ALL_FUNCTIONS    0
  594.  
  595. RETCODE ODBC_API SQLGetFunctions(    /* Level 1 */
  596.     HDBC        hdbc,
  597.     UWORD        fFunction,    /* enumSQLFunctions */
  598.     UWORD ODBCFAR *    pfExists );    /* TRUE or FALSE */
  599.  
  600.  
  601. enum enumSQLFetchDirection {
  602.     SQL_FD_FETCH_NEXT        = 1,
  603.     SQL_FD_FETCH_FIRST        = 2,
  604.     SQL_FD_FETCH_LAST        = 4,
  605.     SQL_FD_FETCH_PRIOR        = 8,
  606.     SQL_FD_FETCH_ABSOLUTE    = 16,
  607.     SQL_FD_FETCH_RELATIVE    = 32,
  608.     SQL_FD_FETCH_RESUME        = 64
  609. #if (ODBCVER >= 0x0200)
  610.     ,
  611.     SQL_FD_FETCH_BOOKMARK    = 128
  612. #endif
  613. };
  614.  
  615. #define SQL_FD_FETCH_PREV    SQL_FD_FETCH_PRIOR
  616.  
  617. enum enumSQLConcurMask {
  618.     SQL_SCCO_READ_ONLY        = 1,
  619.     SQL_SCCO_LOCK        = 2,
  620.     SQL_SCCO_OPT_ROWVER        = 4,
  621.     SQL_SCCO_OPT_VALUES        = 8
  622. };
  623.  
  624. #define SQL_SCCO_OPT_TIMESTAMP    SQL_SCCO_OPT_ROWVER
  625.  
  626. enum enumSQLScrollOptions {
  627.     SQL_SO_FORWARD_ONLY        = 1,
  628.     SQL_SO_KEYSET_DRIVEN    = 2,
  629.     SQL_SO_DYNAMIC        = 4,
  630.     SQL_SO_MIXED        = 8
  631. #if (ODBCVER >= 0x0200)
  632.     ,
  633.     SQL_SO_STATIC        = 16
  634. #endif
  635. };
  636.  
  637. enum enumODBCAPIConform {
  638.     SQL_OAC_NONE        = 0x0000,
  639.     SQL_OAC_LEVEL1        = 0x0001,
  640.     SQL_OAC_LEVEL2        = 0x0002
  641. };
  642.  
  643. enum enumCliSagConform {
  644.     SQL_OSCC_NOT_COMPLIANT    = 0x0000,
  645.     SQL_OSCC_COMPLIANT        = 0x0001
  646. };
  647.  
  648. enum enumODBCSQLConform {
  649.     SQL_OSC_MINIMUM    = 0x0000,
  650.     SQL_OSC_CORE    = 0x0001,
  651.     SQL_OSC_EXTENDED    = 0x0002
  652. };
  653.  
  654. enum enumConcatNullBehavior {
  655.     SQL_CB_NULL        = 0x0000,
  656.     SQL_CB_NON_NULL    = 0x0001
  657. };
  658.  
  659. enum enumCursorCommitBehavior {
  660.     SQL_CB_DELETE    = 0x0000,
  661.     SQL_CB_CLOSE    = 0x0001,
  662.     SQL_CB_PRESERVE    = 0x0002
  663. };
  664.  
  665. #define SQL_CC_DELETE    SQL_CB_DELETE
  666. #define SQL_CR_DELETE    SQL_CB_DELETE
  667. #define SQL_CC_CLOSE    SQL_CB_CLOSE
  668. #define SQL_CR_CLOSE    SQL_CB_CLOSE
  669. #define SQL_CC_PRESERVE    SQL_CB_PRESERVE
  670. #define SQL_CR_PRESERVE    SQL_CB_PRESERVE
  671.  
  672. enum enumIDCase {
  673.     SQL_IC_UPPER    = 0x0001,
  674.     SQL_IC_LOWER    = 0x0002,
  675.     SQL_IC_SENSITIVE    = 0x0003,
  676.     SQL_IC_MIXED    = 0x0004
  677. };
  678.  
  679. enum enumTxnValues {
  680.     SQL_TC_NONE        = 0x0000,
  681.     SQL_TC_DML        = 0x0001,
  682.     SQL_TC_ALL        = 0x0002
  683. #if (ODBCVER >= 0x0200)
  684.     ,
  685.     SQL_TC_DDL_COMMIT    = 0x0003,
  686.     SQL_TC_DDL_IGNORE    = 0x0004
  687. #endif
  688. };
  689.  
  690. enum enumCorrelationName {
  691.     SQL_CN_NONE        = 0x0000,
  692.     SQL_CN_DIFFERENT    = 0x0001,
  693.     SQL_CN_ANY        = 0x0002
  694. };
  695.  
  696. enum enumNonNullableCol {
  697.     SQL_NNC_NULL    = 0x0000,
  698.     SQL_NNC_NON_NULL    = 0x0001
  699. };
  700.  
  701. #if (ODBCVER >= 0x0200)
  702.  
  703. enum enumNullCollation {
  704.     SQL_NC_HIGH        = 0x0000,
  705.     SQL_NC_LOW        = 0x0001,
  706.     SQL_NC_START    = 0x0002,
  707.     SQL_NC_END        = 0x0004
  708. };
  709.  
  710. enum enumFileUsage {
  711.     SQL_FILE_NOT_SUPPORTED    = 0x0000,
  712.     SQL_FILE_TABLE        = 0x0001,
  713.     SQL_FILE_QUALIFIER        = 0x0002
  714. };
  715.  
  716. enum enumGetDataExtensions {
  717.     SQL_GD_ANY_COLUMN        = 0x00000000L,
  718.     SQL_GD_ANY_ORDER        = 0x00000001L,
  719.     SQL_GD_BLOCK        = 0x00000002L,
  720.     SQL_GD_BOUND        = 0x00000004L
  721. };
  722.  
  723. enum enumAlterTable {
  724.     SQL_AT_ADD_COLUMN    = 0x00000001L,
  725.     SQL_AT_DROP_COLUMN    = 0x00000002L
  726. };
  727.  
  728. enum enumPosStmts {
  729.     SQL_PS_POSITIONED_DELETE    = 0x00000001L,
  730.     SQL_PS_POSITIONED_UPDATE    = 0x00000002L,
  731.     SQL_PS_SELECT_FOR_UPDATE    = 0x00000004L
  732. };
  733.  
  734. enum enumGroupBy {
  735.     SQL_GB_NOT_SUPPORTED        = 0x00000001L,
  736.     SQL_GB_GROUP_BY_EQUALS_SELECT    = 0x00000002L,
  737.     SQL_GB_GROUP_BY_CONTAINS_SELECT    = 0x00000004L,
  738.     SQL_GB_NO_RELATION            = 0x00000008L
  739. };
  740.  
  741. enum enumOwnerUsage {
  742.     SQL_OU_DML_STATEMENTS    = 0x00000001L,
  743.     SQL_OU_PROCEDURE_INVOCATION    = 0x00000002L,
  744.     SQL_OU_TABLE_DEFINITION    = 0x00000004L,
  745.     SQL_OU_INDEX_DEFINITION    = 0x00000008L,
  746.     SQL_OU_PRIVILEGE_DEFINITION    = 0x00000010L
  747. };
  748.  
  749. enum enumQualifierUsage {
  750.     SQL_QU_DML_STATEMENTS    = 0x00000001L,
  751.     SQL_QU_PROCEDURE_INVOCATION    = 0x00000002L,
  752.     SQL_QU_TABLE_DEFINITION    = 0x00000004L,
  753.     SQL_QU_INDEX_DEFINITION    = 0x00000008L,
  754.     SQL_QU_PRIVILEGE_DEFINITION    = 0x00000010L
  755. };
  756.  
  757. enum enumSubqueries {
  758.     SQL_SQ_COMPARISON            = 0x00000001L,
  759.     SQL_SQ_EXISTS            = 0x00000002L,
  760.     SQL_SQ_IN                = 0x00000004L,
  761.     SQL_SQ_QUANTIFIED            = 0x00000008L,
  762.     SQL_SQ_CORRELATED_SUBQUERIES    = 0x00000010L
  763. };
  764.  
  765. enum enumUnion {
  766.     SQL_U_UNION        = 0x00000001L,
  767.     SQL_U_UNION_ALL    = 0x00000002L
  768. };
  769.  
  770. enum enumBookmark {
  771.     SQL_BP_CLOSE    = 0x00000001L,
  772.     SQL_BP_DELETE    = 0x00000002L,
  773.     SQL_BP_DROP        = 0x00000004L,
  774.     SQL_BP_TRANSACTION    = 0x00000008L,
  775.     SQL_BP_UPDATE    = 0x00000010L,
  776.     SQL_BP_OTHER_HSTMT    = 0x00000020L,
  777.     SQL_BP_SCROLL    = 0x00000040L
  778. };
  779.  
  780. enum enumStaticSensitivity {
  781.     SQL_SS_ADDITIONS    = 0x00000001L,
  782.     SQL_SS_DELETIONS    = 0x00000002L,
  783.     SQL_SS_UPDATES    = 0x00000004L
  784. };
  785.  
  786. enum enumLockTypes {
  787.     SQL_LCK_NO_CHANGE    = 0x00000001L,
  788.     SQL_LCK_EXCLUSIVE    = 0x00000002L,
  789.     SQL_LCK_UNLOCK    = 0x00000004L
  790. };
  791.  
  792. enum enumPosOps {
  793.     SQL_POS_POSITION    = 0x00000001L,
  794.     SQL_POS_REFRESH    = 0x00000002L,
  795.     SQL_POS_UPDATE    = 0x00000004L,
  796.     SQL_POS_DELETE    = 0x00000008L,
  797.     SQL_POS_ADD        = 0x00000010L
  798. };
  799.  
  800. enum enumQualifierLocal {
  801.     SQL_QL_START    = 0x0001L,
  802.     SQL_QL_END        = 0x0002L
  803. };
  804.  
  805. #if (ODBCVER >= 0x0201)
  806.  
  807. enum enumOJCapabilities {
  808.     SQL_OJ_LEFT            = 0x00000001L,
  809.     SQL_OJ_RIGHT        = 0x00000002L,
  810.     SQL_OJ_FULL            = 0x00000004L,
  811.     SQL_OJ_NESTED        = 0x00000008L,
  812.     SQL_OJ_NOT_ORDERED        = 0x00000010L,
  813.     SQL_OJ_INNER        = 0x00000020L,
  814.     SQL_OJ_ALL_COMPARISON_OPS    = 0x00000040L
  815. };
  816.  
  817. #endif /* (ODBCVER >= 0x0201) */
  818.  
  819. #endif /* (ODBCVER >= 0x0200) */
  820.  
  821. enum enumSQLConvertFunctions {
  822.     SQL_FN_CVT_CONVERT        = 1
  823. };
  824.  
  825. enum enumSQLNumericFunctions {
  826.     SQL_FN_NUM_ABS        = 0x00000001L,
  827.     SQL_FN_NUM_ACOS        = 0x00000002L,
  828.     SQL_FN_NUM_ASIN        = 0x00000004L,
  829.     SQL_FN_NUM_ATAN        = 0x00000008L,
  830.     SQL_FN_NUM_ATAN2        = 0x00000010L,
  831.     SQL_FN_NUM_CEILING        = 0x00000020L,
  832.     SQL_FN_NUM_COS        = 0x00000040L,
  833.     SQL_FN_NUM_COT        = 0x00000080L,
  834.     SQL_FN_NUM_EXP        = 0x00000100L,
  835.     SQL_FN_NUM_FLOOR        = 0x00000200L,
  836.     SQL_FN_NUM_LOG        = 0x00000400L,
  837.     SQL_FN_NUM_MOD        = 0x00000800L,
  838.     SQL_FN_NUM_SIGN        = 0x00001000L,
  839.     SQL_FN_NUM_SIN        = 0x00002000L,
  840.     SQL_FN_NUM_SQRT        = 0x00004000L
  841.     /* Enums must be of type int, so the rest cannot be enums
  842.        with 16 bit compilers */
  843.     /*
  844.     SQL_FN_NUM_TAN        = 0x00008000L,
  845.     SQL_FN_NUM_PI        = 0x00010000L,
  846.     SQL_FN_NUM_RAND        = 0x00020000L
  847.     */
  848.     #define SQL_FN_NUM_TAN    0x00008000L
  849.     #define SQL_FN_NUM_PI    0x00010000L
  850.     #define SQL_FN_NUM_RAND    0x00020000L
  851. #if (ODBCVER >= 0x0200)
  852.     #define SQL_FN_NUM_DEGREES    0x00040000L
  853.     #define SQL_FN_NUM_LOG10    0x00080000L
  854.     #define SQL_FN_NUM_POWER    0x00100000L
  855.     #define SQL_FN_NUM_RADIANS    0x00200000L
  856.     #define SQL_FN_NUM_ROUND    0x00400000L
  857.     #define SQL_FN_NUM_TRUNCATE    0x00800000L
  858. #endif
  859. };
  860.  
  861. enum enumSQLStringFunctions {
  862.     SQL_FN_STR_CONCAT        = 0x00000001L,
  863.     SQL_FN_STR_INSERT        = 0x00000002L,
  864.     SQL_FN_STR_LEFT        = 0x00000004L,
  865.     SQL_FN_STR_LTRIM        = 0x00000008L,
  866.     SQL_FN_STR_LENGTH        = 0x00000010L,
  867.     SQL_FN_STR_LOCATE        = 0x00000020L,
  868.     SQL_FN_STR_LCASE        = 0x00000040L,
  869.     SQL_FN_STR_REPEAT        = 0x00000080L,
  870.     SQL_FN_STR_REPLACE        = 0x00000100L,
  871.     SQL_FN_STR_RIGHT        = 0x00000200L,
  872.     SQL_FN_STR_RTRIM        = 0x00000400L,
  873.     SQL_FN_STR_SUBSTRING    = 0x00000800L,
  874.     SQL_FN_STR_UCASE        = 0x00001000L,
  875.     SQL_FN_STR_ASCII        = 0x00002000L,
  876.     SQL_FN_STR_CHAR        = 0x00004000L
  877. #if (ODBCVER >= 0x0200)
  878.     /* Enums must be of type int, so the rest cannot be enums
  879.        with 16 bit compilers */
  880.     #define SQL_FN_STR_DIFFERENCE 0x00008000L
  881.     #define SQL_FN_STR_LOCATE_2    0x00010000L
  882.     #define SQL_FN_STR_SOUNDEX    0x00020000L
  883.     #define SQL_FN_STR_SPACE    0x00040000L
  884. #endif
  885. };
  886.  
  887. enum enumSQLSystemFunctions {
  888.     SQL_FN_SYS_USERNAME        = 0x00000001L,
  889.     SQL_FN_SYS_DBNAME        = 0x00000002L,
  890.     SQL_FN_SYS_IFNULL        = 0x00000004L
  891. };
  892.  
  893. enum enumSQLTimedateFunctions {
  894.     SQL_FN_TD_NOW        = 0x00000001L,
  895.     SQL_FN_TD_CURDATE        = 0x00000002L,
  896.     SQL_FN_TD_DAYOFMONTH    = 0x00000004L,
  897.     SQL_FN_TD_DAYOFWEEK        = 0x00000008L,
  898.     SQL_FN_TD_DAYOFYEAR        = 0x00000010L,
  899.     SQL_FN_TD_MONTH        = 0x00000020L,
  900.     SQL_FN_TD_QUARTER        = 0x00000040L,
  901.     SQL_FN_TD_WEEK        = 0x00000080L,
  902.     SQL_FN_TD_YEAR        = 0x00000100L,
  903.     SQL_FN_TD_CURTIME        = 0x00000200L,
  904.     SQL_FN_TD_HOUR        = 0x00000400L,
  905.     SQL_FN_TD_MINUTE        = 0x00000800L,
  906.     SQL_FN_TD_SECOND        = 0x00001000L
  907. #if (ODBCVER >= 0x0200)
  908.     ,
  909.     SQL_FN_TD_TIMESTAMPADD    = 0x00002000L,
  910.     SQL_FN_TD_TIMESTAMPDIFF    = 0x00004000L
  911.     /* Enums must be of type int, so the rest cannot be enums
  912.        with 16 bit compilers */
  913.     #define SQL_FN_TD_DAYNAME    0x00008000L
  914.     #define SQL_FN_TD_MONTHNAME    0x00010000L
  915. #endif
  916. };
  917.  
  918. enum enumSQLTSI {
  919.     SQL_FN_TSI_FRAC_SECOND    = 0x00000001L,
  920.     SQL_FN_TSI_SECOND        = 0x00000002L,
  921.     SQL_FN_TSI_MINUTE        = 0x00000004L,
  922.     SQL_FN_TSI_HOUR        = 0x00000008L,
  923.     SQL_FN_TSI_DAY        = 0x00000010L,
  924.     SQL_FN_TSI_WEEK        = 0x00000020L,
  925.     SQL_FN_TSI_MONTH        = 0x00000040L,
  926.     SQL_FN_TSI_QUARTER        = 0x00000080L,
  927.     SQL_FN_TSI_YEAR        = 0x00000100L
  928. };
  929.  
  930. enum enumSQLConvert {
  931.     SQL_CVT_CHAR        = 0x00000001L,
  932.     SQL_CVT_NUMERIC        = 0x00000002L,
  933.     SQL_CVT_DECIMAL        = 0x00000004L,
  934.     SQL_CVT_INTEGER        = 0x00000008L,
  935.     SQL_CVT_SMALLINT        = 0x00000010L,
  936.     SQL_CVT_FLOAT        = 0x00000020L,
  937.     SQL_CVT_REAL        = 0x00000040L,
  938.     SQL_CVT_DOUBLE        = 0x00000080L,
  939.     SQL_CVT_VARCHAR        = 0x00000100L,
  940.     SQL_CVT_LONGVARCHAR        = 0x00000200L,
  941.     SQL_CVT_BINARY        = 0x00000400L,
  942.     SQL_CVT_VARBINARY        = 0x00000800L,
  943.     SQL_CVT_BIT            = 0x00001000L,
  944.     SQL_CVT_TINYINT        = 0x00002000L,
  945.     SQL_CVT_BIGINT        = 0x00004000L
  946.     /* Enums must be of type int, so the rest cannot be enums
  947.        with 16 bit compilers */
  948.     /*
  949.     SQL_CVT_DATE        = 0x00008000L,
  950.     SQL_CVT_TIME        = 0x00010000L,
  951.     SQL_CVT_TIMESTAMP        = 0x00020000L,
  952.     SQL_CVT_LONGVARBINARY    = 0x00040000L
  953.     */
  954.     #define SQL_CVT_DATE    0x00008000L
  955.     #define SQL_CVT_TIME    0x00010000L
  956.     #define SQL_CVT_TIMESTAMP    0x00020000L
  957.     #define SQL_CVT_LONGVARBINARY 0x00040000L
  958. };
  959.  
  960. enum enumSQLGetInfo {    /* Types of information available */
  961.     /* Driver information */
  962.     SQL_INFO_FIRST,        /* first GetInfo type */
  963.     SQL_ACTIVE_CONNECTIONS = 0,    /* returns short */
  964.     SQL_ACTIVE_STATEMENTS,    /* returns short */
  965.     SQL_DATA_SOURCE_NAME,    /* returns string */
  966.     SQL_DRIVER_HDBC,        /* returns HDBC */
  967.     SQL_DRIVER_HENV,        /* returns HENV */
  968.     SQL_DRIVER_HSTMT,        /* returns HSTMT */
  969.     SQL_DRIVER_NAME,        /* returns string */
  970.     SQL_DRIVER_VER,        /* returns string */
  971.     SQL_FETCH_DIRECTION,    /* returns mask of enumSQLFetchDirection */
  972.     SQL_ODBC_API_CONFORMANCE,    /* returns integer 0, 1 or 2*/
  973.     SQL_ODBC_VER,        /* returns string */
  974.     SQL_ROW_UPDATES,        /* returns string "Y" or "N" */
  975.     SQL_ODBC_SAG_CLI_CONFORMANCE,/* returns short TRUE or FALSE */
  976.     SQL_SERVER_NAME,        /* returns string */
  977.     SQL_SEARCH_PATTERN_ESCAPE,    /* returns string */
  978.     SQL_ODBC_SQL_CONFORMANCE,    /* returns short 0, 1 or 2 */
  979.     /* DBMS information */
  980.     SQL_DATABASE_NAME,        /* returns string - Use SQLGetConnectOption */
  981.     SQL_DBMS_NAME,        /* returns string */
  982.     SQL_DBMS_VER,        /* returns string */
  983.     /* Data source capabilities */
  984.     SQL_ACCESSIBLE_TABLES,    /* returns string "Y" or "N" */
  985.     SQL_ACCESSIBLE_PROCEDURES,    /* returns string "Y" or "N" */
  986.     SQL_PROCEDURES,        /* returns string "Y" or "N" */
  987.     SQL_CONCAT_NULL_BEHAVIOR,    /* returns short 0=NULL 1=empty string */
  988.     SQL_CURSOR_COMMIT_BEHAVIOR,    /* returns short 0=close/del 1=close 2=open */
  989.     SQL_CURSOR_ROLLBACK_BEHAVIOR,/* same as above */
  990.     SQL_DATA_SOURCE_READ_ONLY,    /* returns string "Y" or "N" */
  991.     SQL_DEFAULT_TXN_ISOLATION,    /* returns mask of enumSQLIsolation */
  992.     SQL_EXPRESSIONS_IN_ORDERBY,    /* returns string "Y" or "N" */
  993.     SQL_IDENTIFIER_CASE,    /* returns short 0=UPR 1=LWR 2=case sens 3=ins*/
  994.     SQL_IDENTIFIER_QUOTE_CHAR,    /* returns string */
  995.     SQL_MAX_COLUMN_NAME_LEN,    /* returns short */
  996.     SQL_MAX_CURSOR_NAME_LEN,    /* returns short */
  997.     SQL_MAX_OWNER_NAME_LEN,    /* returns short */
  998.     SQL_MAX_PROCEDURE_NAME_LEN,    /* returns short */
  999.     SQL_MAX_QUALIFIER_NAME_LEN,    /* returns short */
  1000.     SQL_MAX_TABLE_NAME_LEN,    /* returns short */
  1001.     SQL_MULT_RESULT_SETS,    /* returns string "Y" or "N" */
  1002.     SQL_MULTIPLE_ACTIVE_TXN,    /* returns string "Y" or "N" */
  1003.     SQL_OUTER_JOINS,        /* returns string "Y" or "N" */
  1004.     SQL_OWNER_TERM,        /* returns string */
  1005.     SQL_PROCEDURE_TERM,        /* returns string */
  1006.     SQL_QUALIFIER_NAME_SEPARATOR,    /* returns string */
  1007.     SQL_QUALIFIER_TERM,        /* returns string */
  1008.     SQL_SCROLL_CONCURRENCY,    /* returns mask of enumSQLConcurMask */
  1009.     SQL_SCROLL_OPTIONS,        /* returns mask of enumSQLScrollOptions */
  1010.     SQL_TABLE_TERM,        /* returns string */
  1011.     SQL_TXN_CAPABLE,        /* returns short 0=none 1=DML 2=DML&DDL */
  1012.     SQL_USER_NAME,        /* returns string */
  1013.     /* Available functions */
  1014.     SQL_CONVERT_FUNCTIONS,    /* returns mask of enumSQLConvertFunctions */
  1015.     SQL_NUMERIC_FUNCTIONS,    /* returns mask of enumSQLNumericFunctions */
  1016.     SQL_STRING_FUNCTIONS,    /* returns mask of enumSQLStringFunctions */
  1017.     SQL_SYSTEM_FUNCTIONS,    /* returns mask of enumSQLSystemFunctions */
  1018.     SQL_TIMEDATE_FUNCTIONS,    /* returns mask of enumSQLTimedateFunctions */
  1019.     /* Conversion capabilities -- all return mask of enumSQLConvert */
  1020.     SQL_CONVERT_BIGINT,
  1021.     SQL_CONVERT_BINARY,
  1022.     SQL_CONVERT_BIT,
  1023.     SQL_CONVERT_CHAR,
  1024.     SQL_CONVERT_DATE,
  1025.     SQL_CONVERT_DECIMAL,
  1026.     SQL_CONVERT_DOUBLE,
  1027.     SQL_CONVERT_FLOAT,
  1028.     SQL_CONVERT_INTEGER,
  1029.     SQL_CONVERT_LONGVARCHAR,
  1030.     SQL_CONVERT_NUMERIC,
  1031.     SQL_CONVERT_REAL,
  1032.     SQL_CONVERT_SMALLINT,
  1033.     SQL_CONVERT_TIME,
  1034.     SQL_CONVERT_TIMESTAMP,
  1035.     SQL_CONVERT_TINYINT,
  1036.     SQL_CONVERT_VARBINARY,
  1037.     SQL_CONVERT_VARCHAR,
  1038.     SQL_CONVERT_LONGVARBINARY,
  1039.     /* Afterthought -- should be in Data source capabilities */
  1040.     SQL_TXN_ISOLATION_OPTION,    /* returns enumSQLIsolation */
  1041.     SQL_ODBC_SQL_OPT_IEF,
  1042.     SQL_CORRELATION_NAME,
  1043.     SQL_NON_NULLABLE_COLUMNS,
  1044. #if (ODBCVER >= 0x0200)
  1045.     SQL_DRIVER_HLIB,
  1046.     SQL_DRIVER_ODBC_VER,
  1047.     SQL_LOCK_TYPES,
  1048.     SQL_POS_OPERATIONS,
  1049.     SQL_POSITIONED_STATEMENTS,
  1050.     SQL_GETDATA_EXTENSIONS,
  1051.     SQL_BOOKMARK_PERSISTENCE,
  1052.     SQL_STATIC_SENSITIVITY,
  1053.     SQL_FILE_USAGE,
  1054.     SQL_NULL_COLLATION,
  1055.     SQL_ALTER_TABLE,
  1056.     SQL_COLUMN_ALIAS,
  1057.     SQL_GROUP_BY,
  1058.     SQL_KEYWORDS,
  1059.     SQL_ORDER_BY_COLUMNS_IN_SELECT,
  1060.     SQL_OWNER_USAGE,
  1061.     SQL_QUALIFIER_USAGE,
  1062.     SQL_QUOTED_IDENTIFIER_CASE,
  1063.     SQL_SPECIAL_CHARACTERS,
  1064.     SQL_SUBQUERIES,
  1065.     SQL_UNION,
  1066.     SQL_MAX_COLUMNS_IN_GROUP_BY,
  1067.     SQL_MAX_COLUMNS_IN_INDEX,
  1068.     SQL_MAX_COLUMNS_IN_ORDER_BY,
  1069.     SQL_MAX_COLUMNS_IN_SELECT,
  1070.     SQL_MAX_COLUMNS_IN_TABLE,
  1071.     SQL_MAX_INDEX_SIZE,
  1072.     SQL_MAX_ROW_SIZE_INCLUDES_LONG,
  1073.     SQL_MAX_ROW_SIZE,
  1074.     SQL_MAX_STATEMENT_LEN,
  1075.     SQL_MAX_TABLES_IN_SELECT,
  1076.     SQL_MAX_USER_NAME_LEN,
  1077.     SQL_MAX_CHAR_LITERAL_LEN,
  1078.     SQL_TIMEDATE_ADD_INTERVALS,
  1079.     SQL_TIMEDATE_DIFF_INTERVALS,
  1080.     SQL_NEED_LONG_DATA_LEN,
  1081.     SQL_MAX_BINARY_LITERAL_LEN,
  1082.     SQL_LIKE_ESCAPE_CLAUSE,
  1083.     SQL_QUALIFIER_LOCATION,
  1084. #endif
  1085.     SQL_END_OF_GETINFO
  1086. };
  1087.  
  1088. #define SQL_INFO_LAST        (SQL_END_OF_GETINFO - 1)
  1089. #define SQL_INFO_DRIVER_START    1000
  1090. #if (ODBCVER >= 0x0201)
  1091.     #define SQL_OJ_CAPABILITIES    65002  /* temp value until ODBC 3.0 */
  1092. #endif
  1093.  
  1094. RETCODE ODBC_API SQLGetInfo(        /* Level 1 */
  1095.     HDBC        hdbc,
  1096.     UWORD        fInfoType,    /* enumSQLGetInfo */
  1097.     PTR            rgbInfoValue,
  1098.     SWORD        cbInfoValueMax,
  1099.     SWORD ODBCFAR *    pcbInfoValue );
  1100.  
  1101. /* API functions -- statements */
  1102.  
  1103. RETCODE ODBC_API SQLAllocStmt(        /* CORE */
  1104.     HDBC        hdbc,
  1105.     HSTMT ODBCFAR *    phstmt );
  1106.  
  1107. RETCODE ODBC_API SQLCancel(        /* CORE */
  1108.     HSTMT        hstmt );
  1109.  
  1110. RETCODE ODBC_API SQLExecDirect(        /* CORE */
  1111.     HSTMT        hstmt,
  1112.     UCHAR ODBCFAR *    szSqlStr,
  1113.     SDWORD        cbSqlStr );
  1114.  
  1115. RETCODE ODBC_API SQLPrepare(        /* CORE */
  1116.     HSTMT        hstmt,
  1117.     UCHAR ODBCFAR *    szSqlStr,
  1118.     SDWORD        cbSqlStr );
  1119.  
  1120. RETCODE ODBC_API SQLExecute(        /* CORE */
  1121.     HSTMT        hstmt );
  1122.  
  1123. RETCODE ODBC_API SQLGetStmtOption(    /* Level 1 */
  1124.     HSTMT        hstmt,
  1125.     UWORD        fOption,    /* enumSQLOption */
  1126.     PTR            pvParam );
  1127.  
  1128. RETCODE ODBC_API SQLSetStmtOption(    /* Level 1 */
  1129.     HSTMT        hstmt,
  1130.     UWORD        fOption,    /* enumSQLOption */
  1131.     UDWORD        vParam );
  1132.  
  1133. enum enumSQLFreeStmt {
  1134.     SQL_CLOSE,
  1135.     SQL_DROP,
  1136.     SQL_UNBIND,
  1137.     SQL_RESET_PARAMS
  1138. };
  1139.  
  1140. RETCODE ODBC_API SQLFreeStmt(        /* CORE */
  1141.     HSTMT        hstmt,
  1142.     UWORD        fOption );    /* enumSQLFreeStmt */
  1143.  
  1144. /* Result related functions */
  1145.  
  1146. RETCODE ODBC_API SQLBindCol(        /* CORE */
  1147.     HSTMT        hstmt,
  1148.     UWORD        icol,        /* 1..n */
  1149.     SWORD        fCType,        /* SQL_C_... */
  1150.     PTR            rgbValue,
  1151.     SDWORD        cbValueMax,
  1152.     SDWORD ODBCFAR *    pcbValue );
  1153.  
  1154. enum enumSQLColAttrType {    /* SQLColAttributes fDescType values */
  1155.     SQL_COLUMN_COUNT,
  1156.     SQL_COLUMN_NAME,
  1157.     SQL_COLUMN_TYPE,
  1158.     SQL_COLUMN_LENGTH,
  1159.     SQL_COLUMN_PRECISION,
  1160.     SQL_COLUMN_SCALE,
  1161.     SQL_COLUMN_DISPLAY_SIZE,
  1162.     SQL_COLUMN_NULLABLE,        /* returns enumSQLNullable */
  1163.     SQL_COLUMN_UNSIGNED,
  1164.     SQL_COLUMN_MONEY,
  1165.     SQL_COLUMN_UPDATABLE,        /* returns enumSQLUpdatable */
  1166.     SQL_COLUMN_AUTO_INCREMENT,
  1167.     SQL_COLUMN_CASE_SENSITIVE,
  1168.     SQL_COLUMN_SEARCHABLE,        /* returns enumSQLSearchable */
  1169.     SQL_COLUMN_TYPE_NAME
  1170. #if (ODBCVER >= 0x0200)
  1171.     ,
  1172.     SQL_COLUMN_TABLE_NAME,
  1173.     SQL_COLUMN_OWNER_NAME,
  1174.     SQL_COLUMN_QUALIFIER_NAME,
  1175.     SQL_COLUMN_LABEL
  1176. #endif
  1177. };
  1178.  
  1179. #define SQL_COLUMN_DRIVER_START        1000
  1180.  
  1181. enum enumSQLNullable {        /* Output from SQLColAttributes,
  1182.                             SQLDescribeCol and SQLSpecialColumns */
  1183.     SQL_NO_NULLS,
  1184.     SQL_NULLABLE,
  1185.     SQL_NULLABLE_UNKNOWN
  1186. };
  1187.  
  1188. enum enumSQLUpdatable {        /* Output from SQLColAttributes */
  1189.     SQL_ATTR_READONLY,
  1190.     SQL_ATTR_WRITE,
  1191.     SQL_ATTR_READWRITE_UNKNOWN
  1192. };
  1193.  
  1194. enum enumSQLSearchable {    /* Output from SQLColAttributes */
  1195.     SQL_UNSEARCHABLE,
  1196.     SQL_LIKE_ONLY,
  1197.     SQL_ALL_EXCEPT_LIKE,
  1198.     SQL_SEARCHABLE
  1199. };
  1200.  
  1201. RETCODE ODBC_API SQLColAttributes(    /* CORE */
  1202.     HSTMT        hstmt,
  1203.     UWORD        icol,        /* 1..n */
  1204.     UWORD        fDescType,    /* enumSQLColAttrType */
  1205.     PTR            rgbDesc,
  1206.     SWORD        cbDescMax,
  1207.     SWORD ODBCFAR *    pcbDesc,
  1208.     SDWORD ODBCFAR *    pfDesc );
  1209.  
  1210. RETCODE ODBC_API SQLDescribeCol(    /* CORE */
  1211.     HSTMT        hstmt,
  1212.     UWORD        icol,        /* 1..n */
  1213.     UCHAR ODBCFAR *    szColName,
  1214.     SWORD        cbColNameMax,
  1215.     SWORD ODBCFAR *    pcbColName,
  1216.     SWORD ODBCFAR *    pfSqlType,    /* enumSQLTYPE */
  1217.     UDWORD ODBCFAR *    pcbColDef,
  1218.     SWORD ODBCFAR *    pibScale,
  1219.     SWORD ODBCFAR *    pfNullable );    /* enumSQLNullable */
  1220.  
  1221. RETCODE ODBC_API SQLFetch(        /* CORE */
  1222.     HSTMT        hstmt );
  1223.  
  1224. enum enumSQLFetchType {
  1225.     SQL_FETCH_NEXT    = 1,
  1226.     SQL_FETCH_FIRST,
  1227.     SQL_FETCH_LAST,
  1228.     SQL_FETCH_PRIOR,
  1229.     SQL_FETCH_ABSOLUTE,
  1230.     SQL_FETCH_RELATIVE,
  1231.     SQL_FETCH_RESUME,        /* not supported by 2.0 drivers */
  1232. #if (ODBCVER >= 0x0200)
  1233.     SQL_FETCH_BOOKMARK
  1234. #endif
  1235. };
  1236.  
  1237. #define SQL_FETCH_PREV        SQL_FETCH_PRIOR
  1238.  
  1239. enum enumSQLRowStatus {
  1240.     SQL_ROW_SUCCESS,
  1241.     SQL_ROW_DELETED,
  1242.     SQL_ROW_UPDATED,
  1243.     SQL_ROW_NOROW
  1244. #if (ODBCVER >= 0x0200)
  1245.     ,
  1246.     SQL_ROW_ADDED,
  1247.     SQL_ROW_ERROR
  1248. #endif
  1249. };
  1250.  
  1251. RETCODE ODBC_API SQLExtendedFetch(    /* Level 2 */
  1252.     HSTMT        hstmt,
  1253.     UWORD        fFetchType,    /* enumSQLFetchType */
  1254.     SDWORD        irow,
  1255.     UDWORD ODBCFAR *    pcrow,        /* number of rows actually fetched */
  1256.     UWORD ODBCFAR *    rgfRowStatus );    /* array of enumSQLRowStatus */
  1257.  
  1258. enum enumSetPosOps {
  1259.     SQL_POSITION,
  1260.     SQL_REFRESH
  1261. #if (ODBCVER >= 0x0200)
  1262.     ,
  1263.     SQL_UPDATE,
  1264.     SQL_DELETE,
  1265.     SQL_ADD
  1266. #endif
  1267. };
  1268.  
  1269. enum enumSetPosLocks {
  1270.     SQL_LOCK_NO_CHANGE,
  1271.     SQL_LOCK_EXCLUSIVE
  1272. #if (ODBCVER >= 0x0200)
  1273.     ,
  1274.     SQL_LOCK_UNLOCK
  1275. #endif
  1276. };
  1277.  
  1278. #define SQL_ENTIRE_ROWSET    0
  1279. #if (ODBCVER >= 0x0200)
  1280.     #define SQL_POSITION_TO(hstmt,irow) \
  1281.             SQLSetPos(hstmt,irow,SQL_POSITION,SQL_LOCK_NO_CHANGE)
  1282.     #define SQL_LOCK_RECORD(hstmt,irow,fLock) \
  1283.             SQLSetPos(hstmt,irow,SQL_POSITION,fLock)
  1284.     #define SQL_REFRESH_RECORD(hstmt,irow,fLock) \
  1285.             SQLSetPos(hstmt,irow,SQL_REFRESH,fLock)
  1286.     #define SQL_UPDATE_RECORD(hstmt,irow) \
  1287.             SQLSetPos(hstmt,irow,SQL_UPDATE,SQL_LOCK_NO_CHANGE)
  1288.     #define SQL_DELETE_RECORD(hstmt,irow) \
  1289.             SQLSetPos(hstmt,irow,SQL_DELETE,SQL_LOCK_NO_CHANGE)
  1290.     #define SQL_ADD_RECORD(hstmt,irow) \
  1291.             SQLSetPos(hstmt,irow,SQL_ADD,SQL_LOCK_NO_CHANGE)
  1292.     #define SQL_ODBC_KEYWORDS \
  1293. "ABSOLUTE,ACTION,ADA,ADD,ALL,ALLOCATE,ALTER,AND,ANY,ARE,AS,"\
  1294. "ASC,ASSERTION,AT,AUTHORIZATION,AVG,"\
  1295. "BEGIN,BETWEEN,BIT,BIT_LENGTH,BOTH,BY,CASCADE,CASCADED,CASE,CAST,CATALOG,"\
  1296. "CHAR,CHAR_LENGTH,CHARACTER,CHARACTER_LENGTH,CHECK,CLOSE,COALESCE,"\
  1297. "COBOL,COLLATE,COLLATION,COLUMN,COMMIT,CONNECT,CONNECTION,CONSTRAINT,"\
  1298. "CONSTRAINTS,CONTINUE,CONVERT,CORRESPONDING,COUNT,CREATE,CROSS,CURRENT,"\
  1299. "CURRENT_DATE,CURRENT_TIME,CURRENT_TIMESTAMP,CURRENT_USER,CURSOR,"\
  1300. "DATE,DAY,DEALLOCATE,DEC,DECIMAL,DECLARE,DEFAULT,DEFERABLE,"\
  1301. "DEFERRED,DELETE,DESC,DESCRIBE,DESCRIPTOR,DIAGNOSTICS,DISCONNECT,"\
  1302. "DISTINCT,DOMAIN,DOUBLE,DROP,"\
  1303. "ELSE,END,END-EXEC,ESCAPE,EXCEPT,EXECEPTION,EXEC,EXECUTE,"\
  1304. "EXISTS,EXTERNAL,EXTRACT,"\
  1305. "FALSE,FETCH,FIRST,FLOAT,FOR,FOREIGN,FORTRAN,FOUND,FROM,FULL,"\
  1306. "GET,GLOBAL,GO,GOTO,GRANT,GROUP,HAVING,HOUR,"\
  1307. "IDENTITY,IMMEDIATE,IN,INCLUDE,INDEX,INDICATOR,INITIALLY,INNER,"\
  1308. "INPUT,INSENSITIVE,INSERT,INTEGER,INTERSECT,INTERNAL,INTO,IS,ISOLATION,"\
  1309. "JOIN,KEY,LANGUAGE,LAST,LEADING,LEFT,LEVEL,LIKE,LOCAL,LOWER,"\
  1310. "MATCH,MAX,MIN,MINUTE,MODULE,MONTH,MUMPS,"\
  1311. "NAMES,NATIONAL,NATURAL,NCHAR,NEXT,NO,NONE,NOT,NULL,NULLIF,NUMERIC,"\
  1312. "OCTET_LENGTH,OF,ON,ONLY,OPEN,OPTION,OR,ORDER,OUTER,OUTPUT,OVERLAPS,"\
  1313. "PAD,PARTIAL,PASCAL,PLI,POSITION,PRECISION,PREPARE,PRESERVE,"\
  1314. "PRIMARY,PRIOR,PRIVILEGES,PROCEDURE,PUBLIC,"\
  1315. "REFERENCES,RELATIVE,RESTRICT,REVOKE,RIGHT,ROLLBACK,ROWS,"\
  1316. "SCHEMA,SCROLL,SECOND,SECTION,SELECT,SEQUENCE,SESSION,SESSION_USER,SET,SIZE,"\
  1317. "SMALLINT,SOME,SPACE,SQL,SQLCA,SQLCODE,SQLERROR,SQLSTATE,SQLWARNING,"\
  1318. "SUBSTRING,SUM,SYSTEM_USER,"\
  1319. "TABLE,TEMPORARY,THEN,TIME,TIMESTAMP,TIMEZONE_HOUR,TIMEZONE_MINUTE,"\
  1320. "TO,TRAILING,TRANSACTION,TRANSLATE,TRANSLATION,TRIM,TRUE,"\
  1321. "UNION,UNIQUE,UNKNOWN,UPDATE,UPPER,USAGE,USER,USING,"\
  1322. "VALUE,VALUES,VARCHAR,VARYING,VIEW,WHEN,WHENEVER,WHERE,WITH,WORK,YEAR"
  1323. #endif /* (ODBCVER >= 0x0200) */
  1324.  
  1325. RETCODE ODBC_API SQLSetPos(        /* Level 2 */
  1326.     HSTMT        hstmt,
  1327.     UWORD        irow,        /* 1..n */
  1328.     UWORD        fRefresh,    /* TRUE or FALSE */
  1329.     UWORD        fLock );    /* TRUE or FALSE */
  1330.  
  1331. enum enumSQLConcurrency {
  1332.     SQL_CONCUR_READ_ONLY    = 1,
  1333.     SQL_CONCUR_LOCK,
  1334.     SQL_CONCUR_ROWVER,
  1335.     SQL_CONCUR_VALUES
  1336. };
  1337.  
  1338. #define SQL_CONCUR_TIMESTAMP        SQL_CONCUR_ROWVER
  1339.  
  1340. #if (ODBCVER >= 0x0200)
  1341.  
  1342. enum enumCursorType {
  1343.     SQL_CURSOR_FORWARD_ONLY,
  1344.     SQL_CURSOR_KEYSET_DRIVEN,
  1345.     SQL_CURSOR_DYNAMIC,
  1346.     SQL_CURSOR_STATIC
  1347. };
  1348.  
  1349. enum enumSimCursor {
  1350.     SQL_SC_NON_UNIQUE,
  1351.     SQL_SC_TRY_UNIQUE,
  1352.     SQL_SC_UNIQUE
  1353. };
  1354.  
  1355. enum enumRetrieveData {
  1356.     SQL_RD_OFF,
  1357.     SQL_RD_ON
  1358. };
  1359.  
  1360. enum enumUseBookmarks {
  1361.     SQL_UB_OFF,
  1362.     SQL_UB_ON
  1363. };
  1364.  
  1365. /* Special values for certain options  */
  1366. #define SQL_ROWSET_SIZE_DEFAULT        1UL
  1367. #define SQL_KEYSET_SIZE_DEFAULT        0UL
  1368. #define    SQL_RD_DEFAULT            SQL_RD_ON
  1369. #define    SQL_UB_DEFAULT            SQL_UB_OFF
  1370.  
  1371. #endif /* (ODBCVER >= 0x0200) */
  1372.  
  1373. enum enumSQLKeySet {
  1374.     SQL_SCROLL_FORWARD_ONLY    = 0,    /* SQL_CURSOR_FORWARD_ONLY */
  1375.     SQL_SCROLL_KEYSET_DRIVEN    = -1,    /* SQL_CURSOR_KEYSET_DRIVEN */
  1376.     SQL_SCROLL_DYNAMIC        = -2    /* SQL_CURSOR_DYNAMIC */
  1377. #if (ODBCVER >= 0x0200)
  1378.     ,
  1379.     SQL_SCROLL_STATIC        = -3    /* SQL_CURSOR_STATIC */
  1380. #endif
  1381. };
  1382.  
  1383.  
  1384. /* Use SQLSetStmtOption */
  1385. RETCODE ODBC_API SQLSetScrollOptions(    /* Level 2 */
  1386.     HSTMT        hstmt,
  1387.     UWORD        fConcurrency,    /* enumSQLConcurrency */
  1388.     SDWORD        crowKeySet,    /* number or enumSQLKeySet */
  1389.     UWORD        crowRowSet );    /* number of rows */
  1390.  
  1391. RETCODE ODBC_API SQLGetCursorName(    /* CORE */
  1392.     HSTMT        hstmt,
  1393.     UCHAR ODBCFAR *    szCursor,
  1394.     SWORD        cbCursorMax,
  1395.     SWORD ODBCFAR *    pcbCursor );
  1396.  
  1397. RETCODE ODBC_API SQLGetData(        /* Level 1 */
  1398.     HSTMT        hstmt,
  1399.     UWORD        icol,        /* 1..n */
  1400.     SWORD        fCType,        /* SQL_C_... */
  1401.     PTR            rgbValue,
  1402.     SDWORD        cbValueMax,
  1403.     SDWORD ODBCFAR *    pcbValue );
  1404.  
  1405. RETCODE ODBC_API SQLNumResultCols(    /* CORE */
  1406.     HSTMT        hstmt,
  1407.     SWORD ODBCFAR *    pccol );
  1408.  
  1409. RETCODE ODBC_API SQLRowCount(        /* CORE */
  1410.     HSTMT        hstmt,
  1411.     SDWORD ODBCFAR *    pcrow );
  1412.  
  1413. RETCODE ODBC_API SQLSetCursorName(    /* CORE */
  1414.     HSTMT        hstmt,
  1415.     UCHAR ODBCFAR *    szCursor,
  1416.     SWORD        cbCursor );
  1417.  
  1418. /* Parameters */
  1419.  
  1420. RETCODE ODBC_API SQLNumParams(        /* Level 2 */
  1421.     HSTMT        hstmt,
  1422.     SWORD ODBCFAR *    pcpar );
  1423.  
  1424. RETCODE ODBC_API SQLDescribeParam(    /* Level 2 */
  1425.     HSTMT        hstmt,
  1426.     UWORD        ipar,        /* 1..n */
  1427.     SWORD ODBCFAR *    pfSqlType,    /* enumSQLTYPE */
  1428.     UDWORD ODBCFAR *    pcbColDef,
  1429.     SWORD ODBCFAR *    pibScale,
  1430.     SWORD ODBCFAR *    pfNullable );    /* enumSQLNullable */
  1431.  
  1432. #if (ODBCVER >= 0x0200)
  1433.     #define SQL_LEN_DATA_AT_EXEC_OFFSET     (-100)
  1434.     #define SQL_LEN_DATA_AT_EXEC(length) \
  1435.                     (-length+SQL_LEN_DATA_AT_EXEC_OFFSET)
  1436.  
  1437. RETCODE ODBC_API SQLBindParameter(
  1438.     HSTMT        hstmt,
  1439.     UWORD        ipar,
  1440.     SWORD        fParamType,
  1441.     SWORD        fCType,
  1442.     SWORD        fSqlType,
  1443.     UDWORD        cbColDef,
  1444.     SWORD        ibScale,
  1445.     PTR            rgbValue,
  1446.     SDWORD        cbValueMax,
  1447.     SDWORD ODBCFAR *    pcbValue );
  1448.     
  1449. #endif
  1450.  
  1451. /* Use SQLBindParameter */
  1452. RETCODE ODBC_API SQLSetParam(        /* CORE */
  1453.     HSTMT        hstmt,
  1454.     UWORD        ipar,        /* 1..n */
  1455.     SWORD        fCType,        /* SQL_C_... */
  1456.     SWORD        fSqlType,    /* enumSQLTYPE */
  1457.     UDWORD        cbColDef,    /* length of data type */
  1458.     SWORD        ibScale,    /* # digits after decimal point */
  1459.     PTR            rgbValue,
  1460.     SDWORD ODBCFAR *    pcbValue );
  1461.  
  1462. RETCODE ODBC_API SQLParamData(        /* Level 1 */
  1463.     HSTMT        hstmt,
  1464.     PTR ODBCFAR *    prgbValue );    /* returns rgbValue from SQLSetParam */
  1465.  
  1466. RETCODE ODBC_API SQLPutData(        /* Level 1 */
  1467.     HSTMT        hstmt,
  1468.     PTR            rgbValue,    /* Note: type set by SQLSetParam */
  1469.     SDWORD        cbValue );
  1470.  
  1471. RETCODE ODBC_API SQLMoreResults(    /* Level 2 */
  1472.     HSTMT        hstmt );
  1473.  
  1474. RETCODE ODBC_API SQLParamOptions(    /* Level 2 */
  1475.     HSTMT        hstmt,
  1476.     UDWORD        crow,
  1477.     UDWORD ODBCFAR *    pirow );
  1478.  
  1479. /* Catalog information */
  1480.  
  1481. RETCODE ODBC_API SQLColumnPrivileges(    /* Level 2 */
  1482.     HSTMT        hstmt,
  1483.     UCHAR ODBCFAR *    szTableQualifier,
  1484.     SWORD        cbTableQualifier,
  1485.     UCHAR ODBCFAR *    szTableOwner,
  1486.     SWORD        cbTableOwner,
  1487.     UCHAR ODBCFAR *    szTableName,
  1488.     SWORD        cbTableName,
  1489.     UCHAR ODBCFAR *    szColumnName,
  1490.     SWORD        cbColumnName );
  1491.  
  1492. RETCODE ODBC_API SQLTablePrivileges(    /* Level 2 */
  1493.     HSTMT        hstmt,
  1494.     UCHAR ODBCFAR *    szTableQualifier,
  1495.     SWORD        cbTableQualifier,
  1496.     UCHAR ODBCFAR *    szTableOwner,
  1497.     SWORD        cbTableOwner,
  1498.     UCHAR ODBCFAR *    szTableName,
  1499.     SWORD        cbTableName );
  1500.  
  1501. RETCODE ODBC_API SQLColumns(        /* Level 1 */
  1502.     HSTMT        hstmt,
  1503.     UCHAR ODBCFAR *    szTableQualifier,
  1504.     SWORD        cbTableQualifier,
  1505.     UCHAR ODBCFAR *    szTableOwner,
  1506.     SWORD        cbTableOwner,
  1507.     UCHAR ODBCFAR *    szTableName,
  1508.     SWORD        cbTableName,
  1509.     UCHAR ODBCFAR *    szColumnName,
  1510.     SWORD        cbColumnName );
  1511.  
  1512. enum enumSQLForeignKeyAction {    /* in SQLForeignKeys result set */
  1513.     SQL_CASCADE,
  1514.     SQL_RESTRICT,
  1515.     SQL_SET_NULL
  1516. };
  1517.  
  1518. RETCODE ODBC_API SQLForeignKeys(    /* Level 2 */
  1519.     HSTMT        hstmt,
  1520.     UCHAR ODBCFAR *    szPkTableQualifier,
  1521.     SWORD        cbPkTableQualifier,
  1522.     UCHAR ODBCFAR *    szPkTableOwner,
  1523.     SWORD        cbPkTableOwner,
  1524.     UCHAR ODBCFAR *    szPkTableName,
  1525.     SWORD        cbPkTableName,
  1526.     UCHAR ODBCFAR *    szFkTableQualifier,
  1527.     SWORD        cbFkTableQualifier,
  1528.     UCHAR ODBCFAR *    szFkTableOwner,
  1529.     SWORD        cbFkTableOwner,
  1530.     UCHAR ODBCFAR *    szFkTableName,
  1531.     SWORD        cbFkTableName );
  1532.  
  1533. RETCODE ODBC_API SQLGetTypeInfo(    /* Level 1 */
  1534.     HSTMT        hstmt,
  1535.     SWORD        fSqlType );    /* enumSQLTYPE or SQL_ALL_TYPES */
  1536.  
  1537. RETCODE ODBC_API SQLPrimaryKeys(    /* Level 2 */
  1538.     HSTMT        hstmt,
  1539.     UCHAR ODBCFAR *    szTableQualifier,
  1540.     SWORD        cbTableQualifier,
  1541.     UCHAR ODBCFAR *    szTableOwner,
  1542.     SWORD        cbTableOwner,
  1543.     UCHAR ODBCFAR *    szTableName,
  1544.     SWORD        cbTableName );
  1545.  
  1546. enum enumSQLProcColUse {    /* in SQLProcedureColumns result set */
  1547.     SQL_PARAM_TYPE_UNKNOWN,
  1548.     SQL_PARAM_INPUT,
  1549.     SQL_PARAM_INPUT_OUTPUT,
  1550.     SQL_RESULT_COL
  1551. #if (ODBCVER >= 0x0200)
  1552.     ,
  1553.     SQL_PARAM_OUTPUT,
  1554.     SQL_RETURN_VALUE
  1555. #endif
  1556. };
  1557.  
  1558. #define SQL_PARAM_TYPE_DEFAULT     SQL_PARAM_INPUT_OUTPUT
  1559. #define    SQL_SETPARAM_VALUE_MAX    (-1L)
  1560.  
  1561. RETCODE ODBC_API SQLProcedureColumns(    /* Level 2 */
  1562.     HSTMT        hstmt,
  1563.     UCHAR ODBCFAR *    szProcQualifier,
  1564.     SWORD        cbProcQualifier,
  1565.     UCHAR ODBCFAR *    szProcOwner,
  1566.     SWORD        cbProcOwner,
  1567.     UCHAR ODBCFAR *    szProcName,
  1568.     SWORD        cbProcName,
  1569.     UCHAR ODBCFAR *    szColumnName,
  1570.     SWORD        cbColumnName );
  1571.  
  1572. RETCODE ODBC_API SQLProcedures(        /* Level 2 */
  1573.     HSTMT        hstmt,
  1574.     UCHAR ODBCFAR *    szProcQualifier,
  1575.     SWORD        cbProcQualifier,
  1576.     UCHAR ODBCFAR *    szProcOwner,
  1577.     SWORD        cbProcOwner,
  1578.     UCHAR ODBCFAR *    szProcName,
  1579.     SWORD        cbProcName );
  1580.  
  1581. enum enumSQLSpecialType {
  1582.     SQL_BEST_ROWID    = 1,
  1583.     SQL_ROWVER
  1584. };
  1585.  
  1586. enum enumSQLScope {
  1587.     SQL_SCOPE_CURROW,
  1588.     SQL_SCOPE_TRANSACTION,
  1589.     SQL_SCOPE_SESSION
  1590. };
  1591.  
  1592. RETCODE ODBC_API SQLSpecialColumns(    /* Level 1 */
  1593.     HSTMT        hstmt,
  1594.     UWORD        fColType,    /* enumSQLSpecialType */
  1595.     UCHAR ODBCFAR *    szTableQualifier,
  1596.     SWORD        cbTableQualifier,
  1597.     UCHAR ODBCFAR *    szTableOwner,
  1598.     SWORD        cbTableOwner,
  1599.     UCHAR ODBCFAR *    szTableName,
  1600.     SWORD        cbTableName,
  1601.     UWORD        fScope,        /* enumSQLScope */
  1602.     UWORD        fNullable );    /* enumSQLNullable */
  1603.  
  1604. enum enumSQLUnique {
  1605.     SQL_INDEX_UNIQUE,
  1606.     SQL_INDEX_ALL
  1607. };
  1608.  
  1609. enum enumSQLAccuracy {
  1610.     SQL_QUICK,
  1611.     SQL_ENSURE
  1612. };
  1613.  
  1614. enum enumSQLTableStat {
  1615.     SQL_TABLE_STAT,
  1616.     SQL_INDEX_CLUSTERED,
  1617.     SQL_INDEX_HASHED,
  1618.     SQL_INDEX_OTHER
  1619. };
  1620.  
  1621. #if (ODBCVER >= 0x0200)
  1622. enum enumProcType {
  1623.     SQL_PT_UNKNOWN,
  1624.     SQL_PT_PROCEDURE,
  1625.     SQL_PT_FUNCTION
  1626. };
  1627.  
  1628. enum enumPseudoCol {
  1629.     SQL_PC_UNKNOWN,
  1630.     SQL_PC_NOT_PSEUDO,
  1631.     SQL_PC_PSEUDO
  1632. };
  1633.  
  1634. #define SQL_PC_NON_PSEUDO    SQL_PC_NOT_PSEUDO
  1635.  
  1636. #endif
  1637.  
  1638. RETCODE ODBC_API SQLStatistics(        /* Level 1 */
  1639.     HSTMT        hstmt,
  1640.     UCHAR ODBCFAR *    szTableQualifier,
  1641.     SWORD        cbTableQualifier,
  1642.     UCHAR ODBCFAR *    szTableOwner,
  1643.     SWORD        cbTableOwner,
  1644.     UCHAR ODBCFAR *    szTableName,
  1645.     SWORD        cbTableName,
  1646.     UWORD        fUnique,    /* enumSQLUnique */
  1647.     UWORD        fAccuracy );    /* enumSQLAccuracy */
  1648.  
  1649. RETCODE ODBC_API SQLTables(        /* Level 1 */
  1650.     HSTMT        hstmt,
  1651.     UCHAR ODBCFAR *    szTableQualifier,
  1652.     SWORD        cbTableQualifier,
  1653.     UCHAR ODBCFAR *    szTableOwner,
  1654.     SWORD        cbTableOwner,
  1655.     UCHAR ODBCFAR *    szTableName,
  1656.     SWORD        cbTableName,
  1657.     UCHAR ODBCFAR *    szTableType,    /* string 'TABLE','VIEW' */
  1658.     SWORD        cbTableType );
  1659.  
  1660. #endif
  1661.  
  1662. #ifdef __cplusplus
  1663. };
  1664. #endif
  1665. #endif /* __ODBC_H_INCLUDED */
  1666.