328 lines
12 KiB
C
328 lines
12 KiB
C
|
#pragma option push -b -a8 -pc -A- /*P_O_Push*/
|
||
|
/*
|
||
|
** ODBCSS.H - This is the application include file for the
|
||
|
** SQL Server driver specific defines.
|
||
|
**
|
||
|
** (C) Copyright 1993-1996 By Microsoft Corp.
|
||
|
**
|
||
|
*/
|
||
|
|
||
|
// SQLSetConnectOption/SQLSetStmtOption driver specific defines.
|
||
|
// Microsoft has 1200 thru 1249 reserved for Microsoft SQL Server driver usage.
|
||
|
|
||
|
// Connection Options
|
||
|
#define SQL_COPT_SS_BASE 1200
|
||
|
#define SQL_COPT_SS_REMOTE_PWD (SQL_COPT_SS_BASE+1) // dbrpwset SQLSetConnectOption only
|
||
|
#define SQL_COPT_SS_USE_PROC_FOR_PREP (SQL_COPT_SS_BASE+2) // Use create proc for SQLPrepare
|
||
|
#define SQL_COPT_SS_INTEGRATED_SECURITY (SQL_COPT_SS_BASE+3) // Force integrated security on login
|
||
|
#define SQL_COPT_SS_PRESERVE_CURSORS (SQL_COPT_SS_BASE+4) // Preserve server cursors after SQLTransact
|
||
|
#define SQL_COPT_SS_USER_DATA (SQL_COPT_SS_BASE+5) // dbgetuserdata/dbsetuserdata
|
||
|
#define SQL_COPT_SS_ANSI_OEM (SQL_COPT_SS_BASE+6) // dbsetopt/DBANSItoOEM/DBOEMtoANSI
|
||
|
#define SQL_COPT_SS_ENLIST_IN_DTC (SQL_COPT_SS_BASE+7) // Enlist in a Viper transaction
|
||
|
#define SQL_COPT_SS_ENLIST_IN_XA (SQL_COPT_SS_BASE+8) // Enlist in a XA transaction
|
||
|
#define SQL_COPT_SS_CONNECTION_DEAD (SQL_COPT_SS_BASE+9) // dbdead SQLGetConnectOption only
|
||
|
#define SQL_COPT_SS_FALLBACK_CONNECT (SQL_COPT_SS_BASE+10) // Enables FallBack connections
|
||
|
#define SQL_COPT_SS_PERF_DATA (SQL_COPT_SS_BASE+11) // Used to access SQL Server ODBC driver performance data
|
||
|
#define SQL_COPT_SS_PERF_DATA_LOG (SQL_COPT_SS_BASE+12) // Used to set the logfile name for the Performance data
|
||
|
#define SQL_COPT_SS_PERF_QUERY_INTERVAL (SQL_COPT_SS_BASE+13) // Used to set the query logging threshold in milliseconds.
|
||
|
#define SQL_COPT_SS_PERF_QUERY_LOG (SQL_COPT_SS_BASE+14) // Used to set the logfile name for saving queryies.
|
||
|
#define SQL_COPT_SS_PERF_QUERY (SQL_COPT_SS_BASE+15) // Used to start and stop query logging.
|
||
|
#define SQL_COPT_SS_PERF_DATA_LOG_NOW (SQL_COPT_SS_BASE+16) // Used to make a statistics log entry to disk.
|
||
|
#define SQL_COPT_SS_QUOTED_IDENT (SQL_COPT_SS_BASE+17) // Enable/Disable Quoted Identifiers
|
||
|
#define SQL_COPT_SS_ANSI_NPW (SQL_COPT_SS_BASE+18) // Enable/Disable ANSI NULL, Padding and Warnings
|
||
|
|
||
|
#define SQL_COPT_SS_MAX_USED SQL_COPT_SS_ANSI_NPW
|
||
|
|
||
|
// Statement Options
|
||
|
#define SQL_SOPT_SS_BASE 1225
|
||
|
#define SQL_SOPT_SS_TEXTPTR_LOGGING (SQL_SOPT_SS_BASE+0) // Text pointer logging
|
||
|
#define SQL_SOPT_SS_CURRENT_COMMAND (SQL_SOPT_SS_BASE+1) // dbcurcmd SQLGetStmtOption only
|
||
|
#define SQL_SOPT_SS_HIDDEN_COLUMNS (SQL_SOPT_SS_BASE+2) // Expose FOR BROWSE hidden columns
|
||
|
#define SQL_SOPT_SS_NOBROWSETABLE (SQL_SOPT_SS_BASE+3) // Set NOBROWSETABLE option
|
||
|
#define SQL_SOPT_SS_MAX_USED SQL_SOPT_SS_NOBROWSETABLE
|
||
|
|
||
|
|
||
|
// Defines for use with SQL_COPT_SS_USE_PROC_FOR_PREP
|
||
|
#define SQL_UP_OFF 0L // Procedures won't be used for prepare
|
||
|
#define SQL_UP_ON 1L // Procedures will be used for prepare
|
||
|
#define SQL_UP_ON_DROP 2L // Temp procedures will be explicitly dropped
|
||
|
#define SQL_UP_DEFAULT SQL_UP_ON
|
||
|
|
||
|
// Defines for use with SQL_COPT_SS_INTEGRATED_SECURITY - Pre-Connect Option only
|
||
|
#define SQL_IS_OFF 0L // Integrated security isn't used
|
||
|
#define SQL_IS_ON 1L // Integrated security is used
|
||
|
#define SQL_IS_DEFAULT SQL_IS_OFF
|
||
|
|
||
|
// Defines for use with SQL_COPT_SS_PRESERVE_CURSORS
|
||
|
#define SQL_PC_OFF 0L // Cursors are closed on SQLTransact
|
||
|
#define SQL_PC_ON 1L // Cursors remain open on SQLTransact
|
||
|
#define SQL_PC_DEFAULT SQL_PC_OFF
|
||
|
|
||
|
// Defines for use with SQL_COPT_SS_USER_DATA
|
||
|
#define SQL_UD_NOTSET NULL // No user data pointer set
|
||
|
|
||
|
// Defines for use with SQL_COPT_SS_ANSI_OEM
|
||
|
#define SQL_AO_OFF 0L // ANSI/OEM translation is not performed
|
||
|
#define SQL_AO_ON 1L // ANSI/OEM translation is performed
|
||
|
#define SQL_AO_DEFAULT SQL_AO_OFF
|
||
|
|
||
|
// Defines for use with SQL_COPT_SS_CONNECTION_DEAD
|
||
|
#define SQL_CD_FALSE 0L // Connection is open/available
|
||
|
#define SQL_CD_TRUE 1L // Connection is closed/dead
|
||
|
|
||
|
// Defines for use with SQL_COPT_SS_FALLBACK_CONNECT
|
||
|
#define SQL_FB_OFF 0L // FallBack connections are disabled
|
||
|
#define SQL_FB_ON 1L // FallBack connections are enabled
|
||
|
#define SQL_FB_DEFAULT SQL_FB_OFF
|
||
|
|
||
|
// Defines for use with SQL_COPT_SS_ENLIST_IN_DTC
|
||
|
#define SQL_DTC_DONE 0L // Delimits end of DTC transaction
|
||
|
|
||
|
// Defines for use with SQL_COPT_SS_QUOTED_IDENT - Pre-Connect Option only
|
||
|
#define SQL_QI_OFF 0L // Quoted identifiers are not supported
|
||
|
#define SQL_QI_ON 1L // Quoted identifiers are supported
|
||
|
#define SQL_QI_DEFAULT SQL_QI_ON
|
||
|
|
||
|
// Defines for use with SQL_COPT_SS_ANSI_NPW - Pre-Connect Option only
|
||
|
#define SQL_AD_OFF 0L // ANSI NULLs, Padding and Warnings are not supported
|
||
|
#define SQL_AD_ON 1L // ANSI NULLs, Padding and Warnings are supported
|
||
|
#define SQL_AD_DEFAULT SQL_AD_ON
|
||
|
|
||
|
// Defines for use with SQL_SOPT_SS_TEXTPTR_LOGGING
|
||
|
#define SQL_TL_OFF 0L // No logging on text pointer ops
|
||
|
#define SQL_TL_ON 1L // Logging occurs on text pointer ops
|
||
|
#define SQL_TL_DEFAULT SQL_TL_ON
|
||
|
|
||
|
// Defines for use with SQL_SOPT_SS_HIDDEN_COLUMNS
|
||
|
#define SQL_HC_OFF 0L // FOR BROWSE columns are hidden
|
||
|
#define SQL_HC_ON 1L // FOR BROWSE columns are exposed
|
||
|
#define SQL_HC_DEFAULT SQL_HC_OFF
|
||
|
|
||
|
// Defines for use with SQL_SOPT_SS_NOBROWSETABLE
|
||
|
#define SQL_NB_OFF 0L // NO_BROWSETABLE is off
|
||
|
#define SQL_NB_ON 1L // NO_BROWSETABLE is on
|
||
|
#define SQL_NB_DEFAULT SQL_NB_OFF
|
||
|
|
||
|
|
||
|
// SQLColAttributes driver specific defines.
|
||
|
// SQLSet/GetDescField driver specific defines.
|
||
|
// Microsoft has 1200 thru 1249 reserved for Microsoft SQL Server driver usage.
|
||
|
|
||
|
#define SQL_CA_SS_BASE 1200
|
||
|
#define SQL_CA_SS_COLUMN_SSTYPE (SQL_CA_SS_BASE+0) // dbcoltype/dbaltcoltype
|
||
|
#define SQL_CA_SS_COLUMN_UTYPE (SQL_CA_SS_BASE+1) // dbcolutype/dbaltcolutype
|
||
|
#define SQL_CA_SS_NUM_ORDERS (SQL_CA_SS_BASE+2) // dbnumorders
|
||
|
#define SQL_CA_SS_COLUMN_ORDER (SQL_CA_SS_BASE+3) // dbcolorder
|
||
|
#define SQL_CA_SS_COLUMN_VARYLEN (SQL_CA_SS_BASE+4) // dbvarylen
|
||
|
#define SQL_CA_SS_NUM_COMPUTES (SQL_CA_SS_BASE+5) // dbnumcompute
|
||
|
#define SQL_CA_SS_COMPUTE_ID (SQL_CA_SS_BASE+6) // dbnextrow status return
|
||
|
#define SQL_CA_SS_COMPUTE_BYLIST (SQL_CA_SS_BASE+7) // dbbylist
|
||
|
#define SQL_CA_SS_COLUMN_ID (SQL_CA_SS_BASE+8) // dbaltcolid
|
||
|
#define SQL_CA_SS_COLUMN_OP (SQL_CA_SS_BASE+9) // dbaltcolop
|
||
|
#define SQL_CA_SS_COLUMN_SIZE (SQL_CA_SS_BASE+10) // dbcollen
|
||
|
#define SQL_CA_SS_COLUMN_HIDDEN (SQL_CA_SS_BASE+11) // Column is hidden (FOR BROWSE)
|
||
|
#define SQL_CA_SS_COLUMN_KEY (SQL_CA_SS_BASE+12) // Column is key column (FOR BROWSE)
|
||
|
#define SQL_CA_SS_BASE_COLUMN_NAME (SQL_CA_SS_BASE+13) // Returns base column name if available
|
||
|
#define SQL_CA_SS_MAX_USED SQL_CA_SS_BASE_COLUMN_NAME
|
||
|
|
||
|
// SQL Server Data Type Tokens. Returned by SQLColAttributes/SQL_CA_SS_COLUMN_SSTYPE.
|
||
|
#define SQLTEXT 0x23
|
||
|
#define SQLVARBINARY 0x25
|
||
|
#define SQLINTN 0x26
|
||
|
#define SQLVARCHAR 0x27
|
||
|
#define SQLBINARY 0x2d
|
||
|
#define SQLIMAGE 0x22
|
||
|
#define SQLCHARACTER 0x2f
|
||
|
#define SQLINT1 0x30
|
||
|
#define SQLBIT 0x32
|
||
|
#define SQLINT2 0x34
|
||
|
#define SQLINT4 0x38
|
||
|
#define SQLMONEY 0x3c
|
||
|
#define SQLDATETIME 0x3d
|
||
|
#define SQLFLT8 0x3e
|
||
|
#define SQLFLTN 0x6d
|
||
|
#define SQLMONEYN 0x6e
|
||
|
#define SQLDATETIMN 0x6f
|
||
|
#define SQLFLT4 0x3b
|
||
|
#define SQLMONEY4 0x7a
|
||
|
#define SQLDATETIM4 0x3a
|
||
|
#define SQLDECIMAL 0x37
|
||
|
#define SQLDECIMALN 0x6a
|
||
|
#define SQLNUMERIC 0x3f
|
||
|
#define SQLNUMERICN 0x6c
|
||
|
|
||
|
// User Data Type definitions. Returned by SQLColAttributes/SQL_CA_SS_COLUMN_UTYPE.
|
||
|
#define SQLudtTEXT 19
|
||
|
#define SQLudtVARBINARY 4
|
||
|
#define SQLudtINTN 13
|
||
|
#define SQLudtVARCHAR 2
|
||
|
#define SQLudtBINARY 3
|
||
|
#define SQLudtIMAGE 20
|
||
|
#define SQLudtCHAR 1
|
||
|
#define SQLudtINT1 5
|
||
|
#define SQLudtBIT 16
|
||
|
#define SQLudtINT2 6
|
||
|
#define SQLudtINT4 7
|
||
|
#define SQLudtMONEY 11
|
||
|
#define SQLudtDATETIME 12
|
||
|
#define SQLudtFLT8 8
|
||
|
#define SQLudtFLTN 14
|
||
|
#define SQLudtMONEYN 17
|
||
|
#define SQLudtDATETIMN 15
|
||
|
#define SQLudtSYSNAME 18
|
||
|
#define SQLudtTIMESTAMP 80
|
||
|
#define SQLudtFLT4 23
|
||
|
#define SQLudtMONEY4 21
|
||
|
#define SQLudtDATETIM4 22
|
||
|
#define SQLudtDECML 24
|
||
|
#define SQLudtDECMLN 26
|
||
|
#define SQLudtNUM 10
|
||
|
#define SQLudtNUMN 25
|
||
|
#define MIN_USER_DATATYPE 100
|
||
|
|
||
|
// aggregate operator types (returned by SQLColAttributes/SQL_CA_SS_COLUMN_OP)
|
||
|
#define SQLAOPCNT 0x4b
|
||
|
#define SQLAOPSUM 0x4d
|
||
|
#define SQLAOPAVG 0x4f
|
||
|
#define SQLAOPMIN 0x51
|
||
|
#define SQLAOPMAX 0x52
|
||
|
#define SQLAOPANY 0x53
|
||
|
#define SQLAOPNOOP 0x56
|
||
|
|
||
|
|
||
|
// SQLGetInfo driver specific defines.
|
||
|
// Microsoft has 1200 thru 1249 reserved for Microsoft SQL Server driver usage.
|
||
|
|
||
|
#define SQL_INFO_SS_FIRST 1200
|
||
|
#define SQL_INFO_SS_NETLIB_NAME (SQL_INFO_SS_FIRST+0) // dbprocinfo
|
||
|
#define SQL_INFO_SS_MAX_USED SQL_INFO_SS_NETLIB_NAME
|
||
|
|
||
|
|
||
|
// Internal server datatypes - used when binding to SQL_C_BINARY
|
||
|
#ifndef MAXNUMERICLEN // Resolve ODS/DBLib conflicts
|
||
|
typedef struct dbmoney
|
||
|
{ // Internal representation of MONEY data type
|
||
|
LONG mnyhigh; // Money value *10,000 (High 32 bits/signed)
|
||
|
ULONG mnylow; // Money value *10,000 (Low 32 bits/unsigned)
|
||
|
} DBMONEY;
|
||
|
|
||
|
typedef struct dbdatetime
|
||
|
{ // Internal representation of DATETIME data type
|
||
|
LONG dtdays; // No of days since Jan-1-1900 (maybe negative)
|
||
|
ULONG dttime; // No. of 300 hundredths of a second since midnight
|
||
|
} DBDATETIME;
|
||
|
|
||
|
typedef struct dbdatetime4
|
||
|
{ // Internal representation of SMALLDATETIME data type
|
||
|
USHORT numdays; // No of days since Jan-1-1900
|
||
|
USHORT nummins; // No. of minutes since midnight
|
||
|
} DBDATETIM4;
|
||
|
|
||
|
typedef LONG DBMONEY4; // Internal representation of SMALLMONEY data type
|
||
|
// Money value *10,000
|
||
|
|
||
|
#define MAXNUMERICLEN 16
|
||
|
|
||
|
#define DBNUM_PREC_TYPE BYTE
|
||
|
#define DBNUM_SCALE_TYPE BYTE
|
||
|
#define DBNUM_VAL_TYPE BYTE
|
||
|
|
||
|
typedef struct dbnumeric
|
||
|
{ // Internal representation of NUMERIC data type
|
||
|
DBNUM_PREC_TYPE precision; // Precision
|
||
|
DBNUM_SCALE_TYPE scale; // Scale
|
||
|
BYTE sign; // Sign (1 if positive, 0 if negative)
|
||
|
DBNUM_VAL_TYPE val[MAXNUMERICLEN]; // Value
|
||
|
} DBNUMERIC;
|
||
|
|
||
|
typedef DBNUMERIC DBDECIMAL;// Internal representation of DECIMAL data type
|
||
|
#endif // MAXNUMERICLEN
|
||
|
|
||
|
/*****************************************************************
|
||
|
This struct is a global used for
|
||
|
gathering statistal data on the driver.
|
||
|
Access to this struct is controled via the
|
||
|
pStatCrit;
|
||
|
******************************************************************/
|
||
|
|
||
|
typedef struct sqlperf
|
||
|
{
|
||
|
// Application Profile Statistics
|
||
|
DWORD TimerResolution;
|
||
|
DWORD SQLidu;
|
||
|
DWORD SQLiduRows;
|
||
|
DWORD SQLSelects;
|
||
|
DWORD SQLSelectRows;
|
||
|
DWORD Transactions;
|
||
|
DWORD SQLPrepares;
|
||
|
DWORD ExecDirects;
|
||
|
DWORD SQLExecutes;
|
||
|
DWORD CursorOpens;
|
||
|
DWORD CursorSize;
|
||
|
DWORD CursorUsed;
|
||
|
LDOUBLE PercentCursorUsed;
|
||
|
LDOUBLE AvgFetchTime;
|
||
|
LDOUBLE AvgCursorSize;
|
||
|
LDOUBLE AvgCursorUsed;
|
||
|
DWORD SQLFetchTime;
|
||
|
DWORD SQLFetchCount;
|
||
|
DWORD CurrentStmtCount;
|
||
|
DWORD MaxOpenStmt;
|
||
|
DWORD SumOpenStmt;
|
||
|
|
||
|
// Connection Statistics
|
||
|
DWORD CurrentConnectionCount;
|
||
|
DWORD MaxConnectionsOpened;
|
||
|
DWORD SumConnectionsOpened;
|
||
|
DWORD SumConnectiontime;
|
||
|
LDOUBLE AvgTimeOpened;
|
||
|
|
||
|
// Network Statistics
|
||
|
DWORD ServerRndTrips;
|
||
|
DWORD BuffersSent;
|
||
|
DWORD BuffersRec;
|
||
|
DWORD BytesSent;
|
||
|
DWORD BytesRec;
|
||
|
|
||
|
// Time Statistics;
|
||
|
DWORD msExecutionTime;
|
||
|
DWORD msNetWorkServerTime;
|
||
|
|
||
|
} SQLPERF;
|
||
|
|
||
|
// The following are option for SQL_COPT_SS_PERF_DATA and SQL_COPT_SS_PERF_QUERY
|
||
|
#define SQL_PERF_START 1 // Starts the driver sampling performance data.
|
||
|
#define SQL_PERF_STOP 2 // Stops the counters from sampling performance data.
|
||
|
|
||
|
// The following options have been deprecated
|
||
|
|
||
|
#define SQL_FAST_CONNECT (SQL_COPT_SS_BASE+0)
|
||
|
// Defines for use with SQL_FAST_CONNECT - only useable before connecting
|
||
|
#define SQL_FC_OFF 0L // Fast connect is off
|
||
|
#define SQL_FC_ON 1L // Fast connect is on
|
||
|
#define SQL_FC_DEFAULT SQL_FC_OFF
|
||
|
|
||
|
// Define old names
|
||
|
#define SQL_REMOTE_PWD SQL_COPT_SS_REMOTE_PWD
|
||
|
#define SQL_USE_PROCEDURE_FOR_PREPARE SQL_COPT_SS_USE_PROC_FOR_PREP
|
||
|
#define SQL_INTEGRATED_SECURITY SQL_COPT_SS_INTEGRATED_SECURITY
|
||
|
#define SQL_PRESERVE_CURSORS SQL_COPT_SS_PRESERVE_CURSORS
|
||
|
#define SQL_TEXTPTR_LOGGING SQL_SOPT_SS_TEXTPTR_LOGGING
|
||
|
/*
|
||
|
|
||
|
The following data struct is used as the vParam with
|
||
|
SQL_COPT_SS_ENLIST_IN_XA to enlist in a XA stansaction
|
||
|
when calling SQLSetStmtAttribute();
|
||
|
|
||
|
*/
|
||
|
typedef struct SQLXaTranTAG
|
||
|
{
|
||
|
void FAR *transManager;
|
||
|
void FAR *xaTransID;
|
||
|
ULONG xaTransIDLength;
|
||
|
DWORD dwErrorInfo;
|
||
|
} SQLXaTran;
|
||
|
|
||
|
// End of odbcss.h
|
||
|
#pragma option pop /*P_O_Pop*/
|