ODBCSS.H

/* 
** 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_BASE1200
#define SQL_REMOTE_PWD(SQL_COPT_SS_BASE+1) // dbrpwset SQLSetConnectOption only
#define SQL_USE_PROCEDURE_FOR_PREPARE(SQL_COPT_SS_BASE+2) // Use create proc for SQLPrepare
#define SQL_INTEGRATED_SECURITY (SQL_COPT_SS_BASE+3) // Force integrated security on login
#define SQL_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_MAX_USEDSQL_COPT_SS_PERF_DATA_LOG_NOW

//Statement Options
#define SQL_SOPT_SS_BASE1225
#define SQL_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_MAX_USEDSQL_SOPT_SS_CURRENT_COMMAND


//Defines for use with SQL_USE_PROCEDURE_FOR_PREPARE
#define SQL_UP_OFF0L//Procedures won't be used for prepare
#define SQL_UP_ON1L//Procedures will be used for prepare
#define SQL_UP_ON_DROP2L//Temp procedures will be explicitly dropped
#define SQL_UP_DEFAULTSQL_UP_ON

//Defines for use with SQL_INTEGRATED_SECURITY - only useable before connecting
#define SQL_IS_OFF0L//Integrated security isn't used
#define SQL_IS_ON1L//Integrated security is used
#define SQL_IS_DEFAULTSQL_IS_OFF

//Defines for use with SQL_PRESERVE_CURSORS
#define SQL_PC_OFF0L//Cursors are closed on SQLTransact
#define SQL_PC_ON1L//Cursors remain open on SQLTransact
#define SQL_PC_DEFAULTSQL_PC_OFF

//Defines for use with SQL_COPT_SS_USER_DATA
#define SQL_UD_NOTSET0L//No user data pointer set

//Defines for use with SSQL_COPT_SS_ANSI_OEMQL_ANSI_OEM
#define SQL_AO_OFF0L//ANSI/OEM translation is not performed
#define SQL_AO_ON1L//ANSI/OEM translation is performed
#define SQL_AO_DEFAULTSQL_AO_OFF//Default unless DSN OEM/ANSI checkbox is checked

//Defines for use with SQL_COPT_SS_CONNECTION_DEAD
#define SQL_CD_FALSE0L//Connection is open/available
#define SQL_CD_TRUE1L//Connection is closed/dead

//Defines for use with SQL_COPT_SS_FALLBACK_CONNECT
#define SQL_FB_OFF0L//FallBack connections are disabled
#define SQL_FB_ON1L//FallBack connections are enabled
#define SQL_FB_DEFAULTSQL_FB_OFF

//Defines for use with SQL_ENLIST_IN_DTC
#define SQL_DTC_DONE0L//Delimits end of Viper transaction

//Defines for use with SQL_TEXTPTR_LOGGING
#define SQL_TL_OFF0L//No logging on text pointer ops
#define SQL_TL_ON1L//Logging occurs on text pointer ops
#define SQL_TL_DEFAULTSQL_TL_ON


//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_BASE1200
#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_MAX_USEDSQL_CA_SS_COLUMN_OP

// SQL Server Data Type Tokens. Returned by SQLColAttributes/SQL_CA_SS_COLUMN_SSTYPE.
#define SQLTEXT 0x23
#define SQLVARBINARY0x25
#define SQLINTN 0x26
#define SQLVARCHAR0x27
#define SQLBINARY0x2d
#define SQLIMAGE0x22
#define SQLCHARACTER0x2f
#define SQLINT1 0x30
#define SQLBIT0x32
#define SQLINT2 0x34
#define SQLINT4 0x38
#define SQLMONEY0x3c
#define SQLDATETIME 0x3d
#define SQLFLT8 0x3e
#define SQLFLTN 0x6d
#define SQLMONEYN0x6e
#define SQLDATETIMN 0x6f
#define SQLFLT4 0x3b
#define SQLMONEY40x7a
#define SQLDATETIM4 0x3a
#define SQLDECIMAL0x37
#define SQLDECIMALN0x6a
#define SQLNUMERIC0x3f
#define SQLNUMERICN 0x6c

//User Data Type definitions. Returned by SQLColAttributes/SQL_CA_SS_COLUMN_UTYPE.
#define SQLudtTEXT19
#define SQLudtVARBINARY 4
#define SQLudtINTN13
#define SQLudtVARCHAR2
#define SQLudtBINARY3
#define SQLudtIMAGE 20
#define SQLudtCHAR1
#define SQLudtINT15
#define SQLudtBIT16
#define SQLudtINT26
#define SQLudtINT47
#define SQLudtMONEY 11
#define SQLudtDATETIME12
#define SQLudtFLT88
#define SQLudtFLTN14
#define SQLudtMONEYN17
#define SQLudtDATETIMN15
#define SQLudtSYSNAME18
#define SQLudtTIMESTAMP 80
#define SQLudtFLT423
#define SQLudtMONEY421
#define SQLudtDATETIM422
#define SQLudtDECML24
#define SQLudtDECMLN26
#define SQLudtNUM10
#define SQLudtNUMN25
#define MIN_USER_DATATYPE100

// aggregate operator types (returned by SQLColAttributes/SQL_CA_SS_COLUMN_OP)
#define SQLAOPCNT0x4b
#define SQLAOPSUM0x4d
#define SQLAOPAVG0x4f
#define SQLAOPMIN0x51
#define SQLAOPMAX0x52
#define SQLAOPANY0x53
#define SQLAOPNOOP0x56


//SQLGetInfo driver specific defines.
//Microsoft has 1200 thru 1249 reserved for Microsoft SQL Server driver usage.

#define SQL_INFO_SS_FIRST1200
#define SQL_INFO_SS_NETLIB_NAME (SQL_INFO_SS_FIRST+0) // dbprocinfo
#define SQL_INFO_SS_MAX_USEDSQL_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_START1// Starts the driver sampling performance data.
#define SQL_PERF_STOP2// 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_OFF0L//Fast connect is off
#define SQL_FC_ON1L//Fast connect is on
#define SQL_FC_DEFAULTSQL_FC_OFF

/*

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;
ULONGxaTransIDLength;
DWORD dwErrorInfo;
} SQLXaTran;

//End of odbcss.h