⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sdodbc.pas

📁 SQLDirect Component Library is a light-weight Borland Database Engine replacement for Borland Delphi
💻 PAS
📖 第 1 页 / 共 5 页
字号:

{**********************************************************}
{							   }
{       Delphi SQLDirect Component Library		   }
{	ODBC 3.0 Interface Unit		 		   }
{                                                          }
{       Copyright (c) 1997,2005 by Yuri Sheino		   }
{                                                          }
{**********************************************************}
{$I SqlDir.inc}
unit SDOdbc {$IFDEF SD_CLR} platform {$ENDIF};

interface

uses
  Windows, SysUtils, Classes, Db, SyncObjs,
{$IFDEF SD_VCL5}
  ComObj,
{$ENDIF}
{$IFDEF SD_VCL6}
  Variants,
{$ENDIF}
{$IFDEF SD_CLR}
  System.Text, System.Runtime.InteropServices,
{$ENDIF}
  SDConsts, SDCommon;

const
	{ column names for ODBC metadata functions(SQLTables and other) }
  ODBC_TBL_SCH_NAME_FIELD 	= 'TABLE_SCHEM';
  ODBC_TBL_NAME_FIELD 	= 'TABLE_NAME';
  ODBC_TBL_TYPE_NAME_FIELD 	= 'TABLE_TYPE';
  ODBC_COL_NAME_FIELD 	= 'COLUMN_NAME';
  ODBC_PROC_NAME_FIELD 	= 'PROCEDURE_NAME';
  ODBC_PROC_SCH_NAME_FIELD 	= 'PROCEDURE_SCHEM';


{********************************************************************
** SQL.H - This is the the main include for ODBC Core functions.
**
**      Updated 5/12/93 for 2.00 specification
**      Updated 5/23/94 for 2.01 specification
**      Updated 11/10/94 for 2.10 specification
**      Updated 04/10/95 for 2.50 specification
**      Updated 6/6/95  for 3.00 specification
*********************************************************************}
const
// special length/indicator values
  SQL_VALUE_DATA	=  0;
  SQL_NULL_DATA       	= -1;
  SQL_DATA_AT_EXEC    	= -2;

// return values from functions - RETCODE values
  SQL_SUCCESS           = 0;
  SQL_SUCCESS_WITH_INFO = 1;
  SQL_STILL_EXECUTING   = 2;
  SQL_NEED_DATA         = 99;
  SQL_NO_DATA           = 100;
  SQL_NO_DATA_FOUND    	= SQL_NO_DATA;
  SQL_ERROR             = -1;
  SQL_INVALID_HANDLE    = -2;

// flags for null-terminated string
  SQL_NTS             	= -3;      	// NTS = Null Terminated String
  SQL_NTSL            	= Longint(-3);	// NTS = Null Terminated String

// maximum message length
  SQL_MAX_MESSAGE_LENGTH= 512;

// date/time length constants
  SQL_DATE_LEN          = 10;
  SQL_TIME_LEN          = 8;  	// add P+1 if precision is nonzero
  SQL_TIMESTAMP_LEN	= 19;	// add P+1 if precision is nonzero

// handle type identifiers
  SQL_HANDLE_ENV        = 1;
  SQL_HANDLE_DBC        = 2;
  SQL_HANDLE_STMT       = 3;
  SQL_HANDLE_DESC       = 4;

// Environment attributes; note SQL_CONNECTTYPE, SQL_SYNC_POINT are also
// environment attributes that are settable at the connection level
  SQL_ATTR_OUTPUT_NTS  	= 10001;

// connection attributes
  SQL_ATTR_AUTO_IPD            	= 10001;
  SQL_ATTR_METADATA_ID         	= 10014;

// statement attributes for SQLGetStmtOption/SQLSetStmtOption
  SQL_ATTR_APP_ROW_DESC        	= 10010;
  SQL_ATTR_APP_PARAM_DESC      	= 10011;
  SQL_ATTR_IMP_ROW_DESC        	= 10012;
  SQL_ATTR_IMP_PARAM_DESC      	= 10013;
  SQL_ATTR_CURSOR_SCROLLABLE   	= (-1);
  SQL_ATTR_CURSOR_SENSITIVITY  	= (-2);

// SQL_ATTR_CURSOR_SCROLLABLE values
  SQL_NONSCROLLABLE            	= 0;
  SQL_SCROLLABLE               	= 1;

// identifiers of fields in the SQL descriptor
  SQL_DESC_COUNT                = 1001;
  SQL_DESC_TYPE                 = 1002;
  SQL_DESC_LENGTH               = 1003;
  SQL_DESC_OCTET_LENGTH_PTR     = 1004;
  SQL_DESC_PRECISION            = 1005;
  SQL_DESC_SCALE                = 1006;
  SQL_DESC_DATETIME_INTERVAL_CODE=1007;
  SQL_DESC_NULLABLE             = 1008;
  SQL_DESC_INDICATOR_PTR        = 1009;
  SQL_DESC_DATA_PTR             = 1010;
  SQL_DESC_NAME                 = 1011;
  SQL_DESC_UNNAMED              = 1012;
  SQL_DESC_OCTET_LENGTH         = 1013;
  SQL_DESC_ALLOC_TYPE           = 1099;

// identifiers of fields in the diagnostics area
  SQL_DIAG_RETURNCODE       	= 1;
  SQL_DIAG_NUMBER           	= 2;
  SQL_DIAG_ROW_COUNT        	= 3;
  SQL_DIAG_SQLSTATE         	= 4;
  SQL_DIAG_NATIVE           	= 5;
  SQL_DIAG_MESSAGE_TEXT     	= 6;
  SQL_DIAG_DYNAMIC_FUNCTION 	= 7;
  SQL_DIAG_CLASS_ORIGIN     	= 8;
  SQL_DIAG_SUBCLASS_ORIGIN  	= 9;
  SQL_DIAG_CONNECTION_NAME  	= 10;
  SQL_DIAG_SERVER_NAME     	= 11;
  SQL_DIAG_DYNAMIC_FUNCTION_CODE= 12;

// dynamic function codes
  SQL_DIAG_ALTER_DOMAIN		=  3;
  SQL_DIAG_ALTER_TABLE         	=  4;
  SQL_DIAG_CALL			=  7;
  SQL_DIAG_CREATE_ASSERTION	=  6;
  SQL_DIAG_CREATE_CHARACTER_SET	=  8;
  SQL_DIAG_CREATE_COLLATION	= 10;
  SQL_DIAG_CREATE_DOMAIN 	= 23;
  SQL_DIAG_CREATE_SCHEMA 	= 64;
  SQL_DIAG_CREATE_INDEX        	= -1;
  SQL_DIAG_CREATE_TABLE        	= 77;
  SQL_DIAG_CREATE_TRANSLATION 	= 79;
  SQL_DIAG_CREATE_VIEW         	= 84;
  SQL_DIAG_DELETE_WHERE        	= 19;
  SQL_DIAG_DROP_ASSERTION 	= 24;
  SQL_DIAG_DROP_CHARACTER_SET 	= 25;
  SQL_DIAG_DROP_COLLATION      	= 26;
  SQL_DIAG_DROP_DOMAIN		= 27;
  SQL_DIAG_DROP_INDEX          	= -2;
  SQL_DIAG_DROP_SCHEMA	    	= 31;
  SQL_DIAG_DROP_TABLE          	= 32;
  SQL_DIAG_DROP_TRANSLATION     = 33;
  SQL_DIAG_DROP_VIEW           	= 36;
  SQL_DIAG_DYNAMIC_DELETE_CURSOR= 38;
  SQL_DIAG_DYNAMIC_UPDATE_CURSOR= 81;
  SQL_DIAG_GRANT               	= 48;
  SQL_DIAG_INSERT              	= 50;
  SQL_DIAG_REVOKE              	= 59;
  SQL_DIAG_SELECT_CURSOR       	= 85;
  SQL_DIAG_UNKNOWN_STATEMENT   	=  0;
  SQL_DIAG_UPDATE_WHERE        	= 82;

// Standard SQL data type codes
  SQL_UNKNOWN_TYPE     	= 0;
  SQL_CHAR             	= 1;
  SQL_NUMERIC          	= 2;
  SQL_DECIMAL          	= 3;
  SQL_INTEGER          	= 4;
  SQL_SMALLINT         	= 5;
  SQL_FLOAT            	= 6;
  SQL_REAL             	= 7;
  SQL_DOUBLE           	= 8;
  SQL_DATETIME         	= 9;
  SQL_VARCHAR          	=12;

// One-parameter shortcuts for date/time data types
  SQL_TYPE_DATE     	= 91;
  SQL_TYPE_TIME     	= 92;
  SQL_TYPE_TIMESTAMP	= 93;

// Statement attribute values for cursor sensitivity
  SQL_UNSPECIFIED    	= 0;
  SQL_INSENSITIVE    	= 1;
  SQL_SENSITIVE      	= 2;

// SQLGetTypeInfo() request for all data types
  SQL_ALL_TYPES        	= 0;

// Default conversion code for SQLBindCol(), SQLBindParam() and SQLGetData()
  SQL_DEFAULT       	= 99;

// SQLGetData() code indicating that the application row descriptor specifies the data type
  SQL_ARD_TYPE      	= (-99);

// SQL date/time type subcodes
  SQL_CODE_DATE      	= 1;
  SQL_CODE_TIME      	= 2;
  SQL_CODE_TIMESTAMP 	= 3;

// CLI attribute/option values
  SQL_FALSE            	= 0;
  SQL_TRUE             	= 1;

// values of NULLABLE field in descriptor
  SQL_NO_NULLS        	= 0;
  SQL_NULLABLE        	= 1;

// NULL status defines; these are used in SQLColAttributes, SQLDescribeCol,
// to describe the nullability of a column in a table.
  SQL_NULLABLE_UNKNOWN	= 2;

// Values returned by SQLGetTypeInfo() to show WHERE clause supported
  SQL_PRED_NONE  	= 0;
  SQL_PRED_CHAR        	= 1;
  SQL_PRED_BASIC       	= 2;

// values of UNNAMED field in descriptor used in SQLColAttribute
  SQL_NAMED            	= 0;
  SQL_UNNAMED          	= 1;

// values of ALLOC_TYPE field in descriptor
  SQL_DESC_ALLOC_AUTO	= 1;
  SQL_DESC_ALLOC_USER	= 2;

// SQLFreeStmt option values
  SQL_CLOSE            	= 0;
  SQL_DROP             	= 1;
  SQL_UNBIND           	= 2;
  SQL_RESET_PARAMS     	= 3;

// Codes used for FetchOrientation in SQLFetchScroll(), and in SQLDataSources()
  SQL_FETCH_NEXT       	= 1;
  SQL_FETCH_FIRST      	= 2;

// Other codes used for FetchOrientation in SQLFetchScroll()
  SQL_FETCH_LAST     	= 3;
  SQL_FETCH_PRIOR    	= 4;
  SQL_FETCH_ABSOLUTE 	= 5;
  SQL_FETCH_RELATIVE 	= 6;

// SQLEndTran() and SQLTransact() option values
  SQL_COMMIT           	= 0;
  SQL_ROLLBACK         	= 1;

// null handles returned by SQLAllocHandle()
  SQL_NULL_HENV      	= 0;
  SQL_NULL_HDBC      	= 0;
  SQL_NULL_HSTMT     	= 0;
  SQL_NULL_HDESC     	= 0;

// null handle used in place of parent handle when allocating HENV
  SQL_NULL_HANDLE	= 0;

// Values that may appear in the result set of SQLSpecialColumns()
  SQL_SCOPE_CURROW     	= 0;
  SQL_SCOPE_TRANSACTION	= 1;
  SQL_SCOPE_SESSION    	= 2;

// Defines for SQLSpecialColumns (returned in the result set)
  SQL_PC_UNKNOWN       	= 0;
  SQL_PC_NON_PSEUDO    	= 1;
  SQL_PC_PSEUDO        	= 2;

// Reserved value for the IdentifierType argument of SQLSpecialColumns()
  SQL_ROW_IDENTIFIER 	= 1;

// Reserved values for UNIQUE argument of SQLStatistics()
  SQL_INDEX_UNIQUE     	= 0;
  SQL_INDEX_ALL        	= 1;

// Values that may appear in the result set of SQLStatistics()
  SQL_INDEX_CLUSTERED  	= 1;
  SQL_INDEX_HASHED     	= 2;
  SQL_INDEX_OTHER      	= 3;

// SQLGetFunctions() values to identify ODBC APIs - supported functions
  SQL_API_SQLALLOCCONNECT	=  1;
  SQL_API_SQLALLOCENV          	=  2;
  SQL_API_SQLALLOCHANDLE       	= 1001;
  SQL_API_SQLALLOCSTMT         	=  3;
  SQL_API_SQLBINDCOL           	=  4;
  SQL_API_SQLBINDPARAM         	=  1002;
  SQL_API_SQLCANCEL            	=  5;
  SQL_API_SQLCLOSECURSOR       	= 1003;
  SQL_API_SQLCOLATTRIBUTE      	= 6;
  SQL_API_SQLCOLUMNS           	= 40;
  SQL_API_SQLCONNECT           	=  7;
  SQL_API_SQLCOPYDESC          	=  1004;
  SQL_API_SQLDATASOURCES       	= 57;
  SQL_API_SQLDESCRIBECOL       	=  8;
  SQL_API_SQLDISCONNECT        	=  9;
  SQL_API_SQLENDTRAN           	= 1005;
  SQL_API_SQLERROR             	= 10;
  SQL_API_SQLEXECDIRECT        	= 11;
  SQL_API_SQLEXECUTE           	= 12;
  SQL_API_SQLFETCH             	= 13;
  SQL_API_SQLFETCHSCROLL       	= 1021;
  SQL_API_SQLFREECONNECT       	= 14;
  SQL_API_SQLFREEENV           	= 15;
  SQL_API_SQLFREEHANDLE        	= 1006;
  SQL_API_SQLFREESTMT          	= 16;
  SQL_API_SQLGETCONNECTATTR    	= 1007;
  SQL_API_SQLGETCONNECTOPTION  	= 42;
  SQL_API_SQLGETCURSORNAME     	= 17;
  SQL_API_SQLGETDATA           	= 43;
  SQL_API_SQLGETDESCFIELD      	= 1008;
  SQL_API_SQLGETDESCREC        	= 1009;
  SQL_API_SQLGETDIAGFIELD      	= 1010;
  SQL_API_SQLGETDIAGREC        	= 1011;
  SQL_API_SQLGETENVATTR        	= 1012;
  SQL_API_SQLGETFUNCTIONS      	= 44;
  SQL_API_SQLGETINFO           	= 45;
  SQL_API_SQLGETSTMTATTR       	= 1014;
  SQL_API_SQLGETSTMTOPTION     	= 46;
  SQL_API_SQLGETTYPEINFO       	= 47;
  SQL_API_SQLNUMRESULTCOLS     	= 18;
  SQL_API_SQLPARAMDATA         	= 48;
  SQL_API_SQLPREPARE           	= 19;
  SQL_API_SQLPUTDATA           	= 49;
  SQL_API_SQLROWCOUNT          	= 20;
  SQL_API_SQLSETCONNECTATTR    	= 1016;
  SQL_API_SQLSETCONNECTOPTION  	= 50;
  SQL_API_SQLSETCURSORNAME     	= 21;
  SQL_API_SQLSETDESCFIELD      	= 1017;
  SQL_API_SQLSETDESCREC        	= 1018;
  SQL_API_SQLSETENVATTR        	= 1019;
  SQL_API_SQLSETPARAM          	= 22;
  SQL_API_SQLSETSTMTATTR       	= 1020;
  SQL_API_SQLSETSTMTOPTION     	= 51;
  SQL_API_SQLSPECIALCOLUMNS    	= 52;
  SQL_API_SQLSTATISTICS        	= 53;
  SQL_API_SQLTABLES            	= 54;
  SQL_API_SQLTRANSACT          	= 23;

// Information requested by SQLGetInfo()
  SQL_MAX_DRIVER_CONNECTIONS    	= 0;
  SQL_MAXIMUM_DRIVER_CONNECTIONS       	= SQL_MAX_DRIVER_CONNECTIONS;
  SQL_MAX_CONCURRENT_ACTIVITIES       	= 1;
  SQL_MAXIMUM_CONCURRENT_ACTIVITIES    	= SQL_MAX_CONCURRENT_ACTIVITIES;
  SQL_DATA_SOURCE_NAME              	=  2;
  SQL_FETCH_DIRECTION                  	=  8;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -