home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / sibylft1.zip / DOC.DAT / DOC / SPCC / DBLAYER.PAS < prev    next >
Pascal/Delphi Source File  |  1997-04-07  |  22KB  |  441 lines

  1.  
  2. {╔══════════════════════════════════════════════════════════════════════════╗
  3.  ║                                                                          ║
  4.  ║     Sibyl Portable Component Classes                                     ║
  5.  ║                                                                          ║
  6.  ║     Copyright (c) 1995,97 SpeedSoft Germany,   All rights reserved.      ║
  7.  ║                                                                          ║
  8.  ╚══════════════════════════════════════════════════════════════════════════╝}
  9.  
  10. UNIT DBLayer;
  11.  
  12. INTERFACE
  13.  
  14. {Rene}
  15. USES Dos,SysUtils;
  16.  
  17. {$IFDEF OS2}
  18. USES Os2Def,BseDos,PmWin;
  19. {$ENDIF}
  20. {$IFDEF Win95}
  21. USES WinNt,WinDef,WinBase;
  22. {$ENDIF}
  23.  
  24. USES Classes;
  25.  
  26. TYPE
  27.     HENV=LONGWORD;
  28.     HDBC=LONGWORD;
  29.     HSTMT=LONGWORD;
  30.     RETCODE=INTEGER;
  31.  
  32.     SQLHENV=HENV;
  33.     SQLHDBC=HDBC;
  34.     SQLHSTMT=HSTMT;
  35.     SQLHWND=HWND;
  36.  
  37.     SWORD=INTEGER;
  38.     UWORD=WORD;
  39.     SQLSMALLINT=SWORD;
  40.     SQLUSMALLINT=UWORD;
  41.     SQLUINTEGER=LONGWORD;
  42.     SQLINTEGER=LONGINT;
  43.     SQLRETURN=SQLSMALLINT;
  44.     SQLCHAR=CSTRING;
  45.     SQLPOINTER=POINTER;
  46.  
  47. CONST
  48.      SQL_SUCCESS             =0;
  49.      SQL_SUCCESS_WITH_INFO   =1;
  50.      SQL_NO_DATA_FOUND       =100;
  51.      SQL_NEED_DATA           =99;
  52.      SQL_NO_DATA             =SQL_NO_DATA_FOUND;
  53.      SQL_STILL_EXECUTING     =2;
  54.      SQL_ERROR               =-1;
  55.      SQL_INVALID_HANDLE      =-2;
  56.  
  57.      SQL_COMMIT              =0;
  58.      SQL_ROLLBACK            =1;
  59.  
  60.     /* Options for SQLSetConnectOption/SQLGetConnectOption */
  61. CONST
  62.     SQL_ACCESS_MODE              =101;
  63.     SQL_AUTOCOMMIT               =102;
  64.     SQL_LOGIN_TIMEOUT            =103;
  65.     SQL_OPT_TRACE                =104;
  66.     SQL_OPT_TRACEFILE            =105;
  67.     SQL_TRANSLATE_DLL            =106;
  68.     SQL_TRANSLATE_OPTION         =107;
  69.     SQL_TXN_ISOLATION            =108;
  70.     SQL_CURRENT_QUALIFIER        =109;
  71.     SQL_ODBC_CURSORS             =110;
  72.     SQL_QUIET_MODE               =111;
  73.     SQL_PACKET_SIZE              =112;
  74.     SQL_CONNECT_OPT_DRVR_START   =1000;
  75.  
  76.     /* Options for SQLGetConnectOption/SQLSetConnectOption extensions */
  77.     SQL_WCHARTYPE                =1252;
  78.     SQL_LONGDATA_COMPAT          =1253;
  79.     SQL_CURRENT_SCHEMA           =1254;
  80.     SQL_DB2EXPLAIN               =1258;
  81.     SQL_DB2ESTIMATE              =1259;
  82.     SQL_PARAMOPT_ATOMIC          =1260;
  83.     SQL_STMTTXN_ISOLATION        =1261;
  84.     SQL_MAXCONN                  =1262;
  85.  
  86.     /* Options for SQLSetConnectOption, SQLSetEnvAttr */
  87.     SQL_CONNECTTYPE              =1255;
  88.     SQL_SYNC_POINT               =1256;
  89.  
  90.     /* Options for SQL_LONGDATA_COMPAT */
  91.     SQL_LD_COMPAT_YES            =1;
  92.     SQL_LD_COMPAT_NO             =0;
  93.     SQL_LD_COMPAT_DEFAULT        =SQL_LD_COMPAT_NO;
  94.  
  95.     /*  Options for SQL_PARAMOPT_ATOMIC*/
  96.     SQL_ATOMIC_YES               =1;
  97.     SQL_ATOMIC_NO                =0;
  98.     SQL_ATOMIC_DEFAULT           =SQL_ATOMIC_YES;
  99.  
  100.     /* Options for SQL_CONNECT_TYPE */
  101.     SQL_CONCURRENT_TRANS         =1;
  102.     SQL_COORDINATED_TRANS        =2;
  103.     SQL_CONNECTTYPE_DEFAULT      =SQL_CONCURRENT_TRANS;
  104.  
  105.     /* Options for SQL_SYNCPOINT */
  106.     SQL_ONEPHASE                 =1;
  107.     SQL_TWOPHASE                 =2;
  108.     SQL_SYNCPOINT_DEFAULT        =SQL_ONEPHASE;
  109.  
  110.     /* Options for SQL_DB2ESTIMATE */
  111.     SQL_DB2ESTIMATE_ON           =1;
  112.     SQL_DB2ESTIMATE_OFF          =0;
  113.     SQL_DB2ESTIMATE_DEFAULT      =SQL_DB2ESTIMATE_OFF;
  114.  
  115.     /* Options for SQL_DB2EXPLAIN */
  116.     SQL_DB2EXPLAIN_ON            =1;
  117.     SQL_DB2EXPLAIN_OFF           =0;
  118.     SQL_DB2EXPLAIN_DEFAULT       =SQL_DB2EXPLAIN_OFF;
  119.  
  120.     /* Options for SQL_WCHARTYPE */
  121.     SQL_WCHARTYPE_CONVERT        =1;
  122.     SQL_WCHARTYPE_NOCONVERT      =0;
  123.     SQL_WCHARTYPE_DEFAULT        =SQL_WCHARTYPE_NOCONVERT;
  124.  
  125.     /* SQL_ACCESS_MODE options */
  126.     SQL_MODE_READ_WRITE          =0;
  127.     SQL_MODE_READ_ONLY           =1;
  128.     SQL_MODE_DEFAULT             =SQL_MODE_READ_WRITE;
  129.  
  130.     /* SQL_AUTOCOMMIT options */
  131.     SQL_AUTOCOMMIT_OFF           =0;
  132.     SQL_AUTOCOMMIT_ON            =1;
  133.     SQL_AUTOCOMMIT_DEFAULT       =SQL_AUTOCOMMIT_ON;
  134.  
  135.     /* SQL_LOGIN_TIMEOUT options */
  136.     SQL_LOGIN_TIMEOUT_DEFAULT    =0;
  137.  
  138.     /* Column types and scopes in SQLSpecialColumns */
  139.     SQL_BEST_ROWID               =1;
  140.     SQL_ROWVER                   =2;
  141.  
  142.     SQL_SCOPE_CURROW             =0;
  143.     SQL_SCOPE_TRANSACTION        =1;
  144.     SQL_SCOPE_SESSION            =2;
  145.  
  146.     /* Defines for SQLStatistics */
  147.     SQL_INDEX_UNIQUE             =0;
  148.     SQL_INDEX_ALL                =1;
  149.  
  150.     SQL_QUICK                    =0;
  151.     SQL_ENSURE                   =1;
  152.  
  153.     /* Defines for SQLStatistics (returned in the result set) */
  154.     SQL_TABLE_STAT               =0;
  155.     SQL_INDEX_CLUSTERED          =1;
  156.     SQL_INDEX_HASHED             =2;
  157.     SQL_INDEX_OTHER              =3;
  158.  
  159.     /* Defines for SQLSpecialColumns (returned in the result set) */
  160.     SQL_PC_UNKNOWN               =0;
  161.     SQL_PC_NOT_PSEUDO            =1;
  162.     SQL_PC_PSEUDO                =2;
  163.  
  164.     /* SQLDataSources "fDirection" values, also used on SQLExtendedFetch() */
  165.     /* See sqlext.h for additional SQLExtendedFetch fetch direction defines */
  166.     SQL_FETCH_NEXT             =1;
  167.     SQL_FETCH_FIRST            =2;
  168.     SQL_FETCH_LAST             =3;
  169.     SQL_FETCH_PRIOR            =4;
  170.     SQL_FETCH_ABSOLUTE         =5;
  171.     SQL_FETCH_RELATIVE         =6;
  172.  
  173.     /* Special length values  */
  174.     SQL_NULL_DATA        =-1;
  175.     SQL_DATA_AT_EXEC     =-2;
  176.     SQL_NTS              =-3;      /* NTS = Null Terminated String    */
  177.  
  178.     /* SQLFreeStmt option values  */
  179.     SQL_CLOSE               =0;
  180.     SQL_DROP                =1;
  181.     SQL_UNBIND              =2;
  182.     SQL_RESET_PARAMS        =3;
  183.  
  184.     /* SQLColAttributes defines */
  185.     SQL_COLUMN_COUNT             =0;
  186.     SQL_COLUMN_NAME              =1;
  187.     SQL_COLUMN_TYPE              =2;
  188.     SQL_COLUMN_LENGTH            =3;
  189.     SQL_COLUMN_PRECISION         =4;
  190.     SQL_COLUMN_SCALE             =5;
  191.     SQL_COLUMN_DISPLAY_SIZE      =6;
  192.     SQL_COLUMN_NULLABLE          =7;
  193.     SQL_COLUMN_UNSIGNED          =8;
  194.     SQL_COLUMN_MONEY             =9;
  195.     SQL_COLUMN_UPDATABLE        =10;
  196.     SQL_COLUMN_AUTO_INCREMENT   =11;
  197.     SQL_COLUMN_CASE_SENSITIVE   =12;
  198.     SQL_COLUMN_SEARCHABLE       =13;
  199.     SQL_COLUMN_TYPE_NAME        =14;
  200.     SQL_COLUMN_TABLE_NAME       =15;
  201.     SQL_COLUMN_OWNER_NAME       =16;
  202.     SQL_COLUMN_QUALIFIER_NAME   =17;
  203.     SQL_COLUMN_LABEL            =18;
  204.     SQL_COLUMN_SCHEMA_NAME      =SQL_COLUMN_OWNER_NAME;
  205.     SQL_COLUMN_CATALOG_NAME     =SQL_COLUMN_QUALIFIER_NAME;
  206.     SQL_COLUMN_DISTINCT_TYPE    =1250;
  207.  
  208.     /* SQLColAttributes defines for SQL_COLUMN_UPDATABLE condition */
  209.     SQL_ATTR_READONLY           = 0;
  210.     SQL_ATTR_WRITE              = 1;
  211.     SQL_ATTR_READWRITE_UNKNOWN  = 2;
  212.  
  213.     /* Standard SQL data types */
  214.     SQL_CHAR                =1;
  215.     SQL_NUMERIC             =2;
  216.     SQL_DECIMAL             =3;
  217.     SQL_INTEGER             =4;
  218.     SQL_SMALLINT            =5;
  219.     SQL_FLOAT               =6;
  220.     SQL_REAL                =7;
  221.     SQL_DOUBLE              =8;
  222.     SQL_DATE                =9;
  223.     SQL_TIME               =10;
  224.     SQL_TIMESTAMP          =11;
  225.     SQL_VARCHAR            =12;
  226.  
  227.     /* SQL extended data types */
  228.     SQL_LONGVARCHAR        =-1;
  229.     SQL_BINARY             =-2;
  230.     SQL_VARBINARY          =-3;
  231.     SQL_LONGVARBINARY      =-4;
  232.     SQL_BIGINT             =-5;  /* Not supported */
  233.     SQL_TINYINT            =-6;  /* Not supported */
  234.     SQL_BIT                =-7;  /* Not supported */
  235.     SQL_GRAPHIC            =-95;
  236.     SQL_VARGRAPHIC         =-96;
  237.     SQL_LONGVARGRAPHIC     =-97;
  238.     SQL_BLOB               =-98;
  239.     SQL_CLOB               =-99;
  240.     SQL_DBCLOB             =-350;
  241.  
  242.     SQL_SIGNED_OFFSET      =-20;
  243.     SQL_UNSIGNED_OFFSET    =-22;
  244.  
  245.     /* C data type to SQL data type mapping */
  246.     SQL_C_CHAR       =SQL_CHAR;      /* CHAR, VARCHAR, DECIMAL, NUMERIC */
  247.     SQL_C_LONG       =SQL_INTEGER;   /* INTEGER                         */
  248.     SQL_C_SHORT      =SQL_SMALLINT;  /* SMALLINT                        */
  249.     SQL_C_FLOAT      =SQL_REAL;      /* REAL                            */
  250.     SQL_C_DOUBLE     =SQL_DOUBLE;    /* FLOAT, DOUBLE                   */
  251.     SQL_C_DATE       =SQL_DATE;      /* DATE                            */
  252.     SQL_C_TIME       =SQL_TIME;      /* TIME                            */
  253.     SQL_C_TIMESTAMP  =SQL_TIMESTAMP; /* TIMESTAMP                       */
  254.     SQL_C_BINARY     =SQL_BINARY;    /* BINARY, VARGINARY               */
  255.     SQL_C_BIT        =SQL_BIT;
  256.     SQL_C_TINYINT    =SQL_TINYINT;
  257.     SQL_C_DBCHAR     =SQL_DBCLOB;
  258.     SQL_C_DEFAULT    =99;
  259.  
  260.     /* For ODBC compatibility only */
  261.     SQL_C_SLONG      =SQL_C_LONG+SQL_SIGNED_OFFSET;
  262.     SQL_C_SSHORT     =SQL_C_SHORT+SQL_SIGNED_OFFSET;
  263.     SQL_C_STINYINT   =SQL_C_TINYINT+SQL_SIGNED_OFFSET;
  264.     SQL_C_ULONG      =SQL_C_LONG+SQL_UNSIGNED_OFFSET;
  265.     SQL_C_USHORT     =SQL_C_SHORT+SQL_UNSIGNED_OFFSET;
  266.     SQL_C_UTINYINT   =SQL_C_TINYINT+SQL_UNSIGNED_OFFSET;
  267.  
  268.     /* generally useful constants */
  269.     SQL_SQLSTATE_SIZE        = 5;   /* size of SQLSTATE, not including
  270.                                           null terminating byte           */
  271.     SQL_MAX_MESSAGE_LENGTH   =1024; /* message buffer size             */
  272.     SQL_MAX_DSN_LENGTH       =32;   /* maximum data source name size   */
  273.     SQL_MAX_ID_LENGTH        =18;   /* maximum identifier name size, */
  274.  
  275.     //SQLSetStmtOption values
  276.     SQL_QUERY_TIMEOUT =0;
  277.     SQL_MAX_ROWS      =1;
  278.     SQL_NOSCAN        =2;
  279.     SQL_MAX_LENGTH    =3;
  280.     SQL_ASYNC_ENABLE  =4;
  281.     SQL_BIND_TYPE     =5;
  282.     SQL_CURSOR_TYPE   =6;
  283.     SQL_CONCURRENCY   =7;
  284.     SQL_KEYSET_SIZE   =8;
  285.     SQL_ROWSET_SIZE   =9;
  286.     SQL_SIMULATE_CURSOR =10;
  287.     SQL_RETRIEVE_DATA =11;
  288.     SQL_USE_BOOKMARKS =12;
  289.     SQL_GET_BOOKMARK  =13;
  290.     SQL_ROW_NUMBER    =14;
  291.  
  292.     //SQLScrollOptions
  293.     SQL_SO_FORWARD_ONLY         = 1;
  294.     SQL_SO_KEYSET_DRIVEN        = 2;
  295.     SQL_SO_DYNAMIC              = 4;
  296.     SQL_SO_MIXED                = 8;
  297.     SQL_SO_STATIC               = 16;
  298.  
  299.     //CursorType
  300.     SQL_CURSOR_FORWARD_ONLY     =0;
  301.     SQL_CURSOR_KEYSET_DRIVEN    =1;
  302.     SQL_CURSOR_DYNAMIC          =2;
  303.     SQL_CURSOR_STATIC           =3;
  304.  
  305.  
  306. TYPE
  307.     TDBProcs=RECORD
  308.                    ModHandle:LONGWORD;  //Module handle
  309.                    ahenv:SQLHENV;       //Environment handle
  310.                    ahdbc:SQLHDBC;       //database handle
  311.                    ahstmt:SQLHSTMT;     //statement handle
  312.                    DataBase:CSTRING;    //Database name
  313.                    AliasName:STRING;    //Server alias name
  314.                    uid:CSTRING;         //user id
  315.                    pwd:CSTRING;         //pasword
  316.                    Assigned:BOOLEAN;    //true if functions are valid
  317.  
  318.                    SQLAllocEnv:FUNCTION(VAR phenv:SQLHENV):SQLRETURN;APIENTRY;
  319.                    SQLAllocConnect:FUNCTION(ahenv:SQLHENV;VAR phdbc:SQLHDBC):SQLRETURN;APIENTRY;
  320.                    SQLConnect:FUNCTION(ahdbc:SQLHDBC;CONST szDSN:SQLCHAR;
  321.                                        cbDSN:LONGINT;CONST szUID:SQLCHAR;
  322.                                        cbUID:LONGINT;CONST szAuthString:SQLCHAR;
  323.                                        cbAuthString:LONGINT):SQLRETURN;APIENTRY;
  324.                    SQLDriverConnect:FUNCTION(ahdbc:SQLHDBC;hWindow:SQLHWND;
  325.                                              CONST szConnStrIn:SQLCHAR;cbConnStrIn:LONGINT;
  326.                                              VAR szConnStrOut:SQLCHAR;cbConnStrOutMax:LONGINT;
  327.                                              VAR pcbConnStrOut:SQLSMALLINT;
  328.                                              fDriverCompletion:LONGWORD):SQLRETURN;APIENTRY;
  329.                    SQLDataSources:FUNCTION(ahenv:SQLHENV;fDirection:LONGWORD;
  330.                                            VAR szDSN:SQLCHAR;cbDSNMax:LONGINT;
  331.                                            VAR pcbDSN:SQLSMALLINT;
  332.                                            VAR szDescription:SQLCHAR;cbDescriptionMax:LONGINT;
  333.                                            VAR pcbDescription:SQLSMALLINT):SQLRETURN;APIENTRY;
  334.                    SQLGetInfo:FUNCTION(ahdbc:SQLHDBC;fInfoType:LONGWORD;VAR rgbInfoValue;cbInfoValueMax:LONGINT;
  335.                                        VAR pcbInfoValue:SQLSMALLINT):SQLRETURN;APIENTRY;
  336.                    SQLGetFunctions:FUNCTION(ahdbc:SQLHDBC;fFunction:LONGWORD;VAR pfExists:SQLUSMALLINT):SQLRETURN;APIENTRY;
  337.                    SQLGetTypeInfo:FUNCTION(ahstmt:SQLHSTMT;fSQLType:LONGINT):SQLRETURN;APIENTRY;
  338.                    SQLSetConnectOption:FUNCTION(ahdbc:SQLHDBC;fOption:LONGWORD;vParam:SQLUINTEGER):SQLRETURN;APIENTRY;
  339.                    SQLGetConnectOption:FUNCTION(ahdbc:SQLHDBC;fOption:LONGWORD;VAR pvParam):SQLRETURN;APIENTRY;
  340.                    SQLSetStmtOption:FUNCTION(ahstmt:SQLHSTMT;fOption:LONGWORD;vParam:SQLUINTEGER):SQLRETURN;APIENTRY;
  341.                    SQLGetStmtOption:FUNCTION(ahstmt:SQLHSTMT;fOption:LONGWORD;VAR pvParam):SQLRETURN;APIENTRY;
  342.                    SQLAllocStmt:FUNCTION(ahdbc:SQLHDBC;VAR phstmt:SQLHSTMT):SQLRETURN;APIENTRY;
  343.                    SQLPrepare:FUNCTION(ahstmt:SQLHSTMT;CONST szSqlStr:SQLCHAR;cbSqlStr:SQLINTEGER):SQLRETURN;APIENTRY;
  344.                    SQLBindParameter:FUNCTION(ahstmt:SQLHSTMT;ipar:LONGWORD;fParamType:LONGINT;
  345.                                              fCType:LONGINT;fSqlType:LONGINT;cbParamDef:SQLUINTEGER;
  346.                                              ibScale:LONGINT;VAR rgbValue;cbValueMax:SQLINTEGER;
  347.                                              VAR pcbValue:SQLINTEGER):SQLRETURN;APIENTRY;
  348.                    SQLSetParam:FUNCTION(ahstmt:SQLHSTMT;ipar:LONGWORD;fCType:LONGINT;fSqlType:LONGINT;
  349.                                         cbParamDef:SQLUINTEGER;ibScale:LONGINT;VAR rgbValue;
  350.                                         VAR pcbValue:SQLINTEGER):SQLRETURN;APIENTRY;
  351.                    SQLParamOptions:FUNCTION(ahstmt:SQLHSTMT;crow:SQLUINTEGER;VAR pirow:SQLUINTEGER):SQLRETURN;APIENTRY;
  352.                    SQLGetCursorName:FUNCTION(ahstmt:SQLHSTMT;VAR szCursor:SQLCHAR;cbCursorMax:LONGINT;
  353.                                              VAR pcbCursor:SQLSMALLINT):SQLRETURN;APIENTRY;
  354.                    SQLSetCursorName:FUNCTION(ahstmt:SQLHSTMT;CONST szCursor:SQLCHAR;cbCursor:LONGINT):SQLRETURN;APIENTRY;
  355.                    SQLExecute:FUNCTION(ahstmt:SQLHSTMT):SQLRETURN;APIENTRY;
  356.                    SQLExecDirect:FUNCTION(ahstmt:SQLHSTMT;CONST szSQLStr:SQLCHAR;cbSqlStr:SQLINTEGER):SQLRETURN;APIENTRY;
  357.                    SQLNativeSql:FUNCTION(ahdbc:SQLHDBC;CONST szSqlStrIn:SQLCHAR;cbSqlStrIn:SQLINTEGER;
  358.                                          VAR szSqlStr:SQLCHAR;cbSqlStrMax:SQLINTEGER;VAR pcbSqlStr:SQLINTEGER):SQLRETURN;APIENTRY;
  359.                    SQLNumParams:FUNCTION(ahstmt:SQLHSTMT;VAR pcpar:SQLSMALLINT):SQLRETURN;APIENTRY;
  360.                    SQLParamData:FUNCTION(ahstmt:SQLHSTMT;VAR prgbValue):SQLRETURN;APIENTRY;
  361.                    SQLPutData:FUNCTION(ahstmt:SQLHSTMT;VAR rgbValue;VAR cbValue:SQLINTEGER):SQLRETURN;APIENTRY;
  362.                    SQLRowCount:FUNCTION(ahstmt:SQLHSTMT;VAR pcrow:SQLINTEGER):SQLRETURN;APIENTRY;
  363.                    SQLNumResultCols:FUNCTION(ahstmt:SQLHSTMT;VAR pccol:SQLSMALLINT):SQLRETURN;APIENTRY;
  364.                    SQLDescribeCol:FUNCTION(ahstmt:SQLHSTMT;icol:LONGWORD;VAR szColName:SQLCHAR;
  365.                                            cbColNameMax:LONGINT;VAR pcbColName:SQLSMALLINT;
  366.                                            VAR pfSqlType:SQLSMALLINT;VAR pcbColDef:SQLUINTEGER;
  367.                                            VAR pibScale:SQLSMALLINT;VAR pfNullable:SQLSMALLINT):SQLRETURN;APIENTRY;
  368.                    SQLColAttributes:FUNCTION(ahstmt:SQLHSTMT;icol:LONGWORD;fDescType:LONGWORD;
  369.                                              VAR rgbDesc:SQLCHAR;cbDescMax:LONGINT;
  370.                                              VAR pcbDesc:SQLSMALLINT;VAR pfDesc:SQLINTEGER):SQLRETURN;APIENTRY;
  371.                    SQLBindCol:FUNCTION(ahstmt:SQLHSTMT;icol:LONGWORD;fCType:LONGINT;VAR rgbValue;
  372.                                        cbValueMax:SQLINTEGER;VAR pcbValue:SQLINTEGER):SQLRETURN;APIENTRY;
  373.                    SQLFetch:FUNCTION(ahstmt:SQLHSTMT):SQLRETURN;APIENTRY;
  374.                    SQLExtendedFetch:FUNCTION(ahstmt:SQLHSTMT;fFetchType:LONGWORD;irow:SQLINTEGER;
  375.                                              VAR pcrow:SQLUINTEGER;VAR rgfRowStatus):SQLRETURN;APIENTRY;
  376.                    SQLGetData:FUNCTION(ahstmt:SQLHSTMT;icol:LONGWORD;fCType:LONGINT;
  377.                                        VAR rgbValue;cbValueMax:SQLINTEGER;VAR pcbValue:SQLINTEGER):SQLRETURN;APIENTRY;
  378.                    SQLMoreResults:FUNCTION(ahstmt:SQLHSTMT):SQLRETURN;APIENTRY;
  379.                    SQLError:FUNCTION(ahenv:SQLHENV;ahdbc:SQLHDBC;ahstmt:SQLHSTMT;VAR szSqlState:SQLCHAR;
  380.                                      VAR pfNativeError:SQLINTEGER;VAR szErrorMsg;
  381.                                      cbErrorMsgMax:LONGINT;VAR pcbErrorMsg:SQLSMALLINT):SQLRETURN;APIENTRY;
  382.                    SQLColumns:FUNCTION(ahstmt:SQLHSTMT;CONST szCatalogName:SQLCHAR;cbCatalogName:LONGINT;
  383.                                       CONST szSchemaName:SQLCHAR;cbSchemaName:LONGINT;
  384.                                       CONST szTableName:SQLCHAR;cbTableName:LONGINT;
  385.                                       CONST szColumnName:SQLCHAR;cbColumnName:LONGINT):SQLRETURN;APIENTRY;
  386.                    SQLForeignKeys:FUNCTION(ahstmt:SQLHSTMT;CONST szPkCatalogName:SQLCHAR;cbPkCatalogName:LONGINT;
  387.                                            CONST szPkSchemaName:SQLCHAR;cbPkSchemaName:LONGINT;
  388.                                            CONST szPkTableName:SQLCHAR;cbPkTableName:LONGINT;
  389.                                            CONST szFkCatalogName:SQLCHAR;cbFkCatalogName:LONGINT;
  390.                                            CONST szFkSchemaName:SQLCHAR;cbFkSchemaName:LONGINT;
  391.                                            CONST szFkTableName:SQLCHAR;cbFkTableName:LONGINT):SQLRETURN;APIENTRY;
  392.                    SQLPrimaryKeys:FUNCTION(ahstmt:SQLHSTMT;CONST szCatalogName:SQLCHAR;cbCatalogName:LONGINT;
  393.                                            CONST szSchemaName:SQLCHAR;cbSchemaName:LONGINT;
  394.                                            CONST szTableName:SQLCHAR;cbTableName:LONGINT):SQLRETURN;APIENTRY;
  395.                    SQLProcedureColumns:FUNCTION(ahstmt:SQLHSTMT;CONST szProcCatalog:SQLCHAR;cbProcCatalog:LONGINT;
  396.                                                 CONST szProcSchema:SQLCHAR;cbProcSchema:LONGINT;
  397.                                                 CONST szProcName:SQLCHAR;cbProcName:LONGINT;
  398.                                                 CONST szColumnName:SQLCHAR;cbColumnName:LONGINT):SQLRETURN;APIENTRY;
  399.                    SQLProcedures:FUNCTION(ahstmt:SQLHSTMT;CONST szProcCatalog:SQLCHAR;cbProcCatalog:LONGINT;
  400.                                           CONST szProcSchema:SQLCHAR;cbProcSchema:LONGINT;
  401.                                           CONST szProcName:SQLCHAR;cbProcName:LONGINT):SQLRETURN;APIENTRY;
  402.                    SQLSpecialColumns:FUNCTION(ahstmt:SQLHSTMT;fColType:LONGWORD;
  403.                                               CONST szCatalogName:SQLCHAR;cbCatalogName:LONGINT;
  404.                                               CONST szSchemaName:SQLCHAR;cbSchemaName:LONGINT;
  405.                                               CONST szTableName:SQLCHAR;cbTableName:LONGINT;
  406.                                               fScope:LONGWORD;fNullable:LONGWORD):SQLRETURN;APIENTRY;
  407.                    SQLStatistics:FUNCTION(ahstmt:SQLHSTMT;CONST szCatalogName:SQLCHAR;cbCatalogName:LONGINT;
  408.                                           CONST szSchemaName:SQLCHAR;cbSchemaName:LONGINT;
  409.                                           CONST szTableName:SQLCHAR;cbTableName:LONGINT;
  410.                                           fUnique:LONGWORD;fAccuracy:LONGWORD):SQLRETURN;APIENTRY;
  411.                    SQLTablePrivileges:FUNCTION(ahstmt:SQLHSTMT;CONST szTableQualifier:SQLCHAR;cbTableQualifier:LONGINT;
  412.                                                CONST szSchemaName:SQLCHAR;cbSchemaName:LONGINT;
  413.                                                CONST szTableName:SQLCHAR;cbTableName:LONGINT):SQLRETURN;APIENTRY;
  414.                    SQLTables:FUNCTION(ahstmt:SQLHSTMT;CONST szCatalogName:SQLCHAR;cbCatalogName:LONGINT;
  415.                                       CONST szSchemaName:SQLCHAR;cbSchemaName:LONGINT;
  416.                                       CONST szTableName:SQLCHAR;cbTableName:LONGINT;
  417.                                       CONST szTableType:SQLCHAR;cbTableType:LONGINT):SQLRETURN;APIENTRY;
  418.                    SQLFreeStmt:FUNCTION(ahstmt:SQLHSTMT;fOption:LONGWORD):SQLRETURN;APIENTRY;
  419.                    SQLCancel:FUNCTION(ahstmt:SQLHSTMT):SQLRETURN;APIENTRY;
  420.                    SQLTransact:FUNCTION(ahenv:SQLHENV;ahdbc:SQLHDBC;fType:LONGWORD):SQLRETURN;APIENTRY;
  421.                    SQLDisconnect:FUNCTION(ahdbc:SQLHDBC):SQLRETURN;APIENTRY;
  422.                    SQLFreeConnect:FUNCTION(ahdbc:SQLHDBC):SQLRETURN;APIENTRY;
  423.                    SQLFreeEnv:FUNCTION(ahenv:SQLHENV):SQLRETURN;APIENTRY;
  424.     END;
  425.  
  426. TYPE
  427.     EProcAddrError=CLASS(Exception);
  428.  
  429. FUNCTION FillDbProcs(VAR DbProcs:TDBProcs):BOOLEAN;
  430. PROCEDURE FreeDbProcs(VAR DbProcs:TDBProcs);
  431. FUNCTION SQLErrorText(VAR DbProcs:TDBProcs;ahenv:SQLHENV;ahdbc:SQLHDBC;ahstmt:SQLHSTMT):STRING;
  432.  
  433. FUNCTION GetDBServersCount:LONGINT;
  434. PROCEDURE GetDBServer(Index:LONGINT;VAR AliasName,DllName:STRING);
  435. PROCEDURE GetDBServerFromAlias(CONST Alias:STRING;VAR DllName:STRING);
  436. PROCEDURE AddServerAlias(CONST AliasName,DllName:STRING);
  437.  
  438. IMPLEMENTATION
  439.  
  440.  
  441.