2025-11-28 00:35:46 +09:00

539 lines
27 KiB
C

//--------------------------------------------------------------------
// Microsoft OLE DB Test
//
// Copyright 1995-2000 Microsoft Corporation.
//
// @doc
//
// @module SCALAR.H | SCALAR header file for test modules.
//
//
// @rev 01 | 03-21-95 | Microsoft | Created
// @rev 02 | 09-06-95 | Microsoft | Updated
//
#ifndef _SCALAR_H_
#define _SCALAR_H_
#include "oledb.h" // OLE DB Header Files
#include "oledberr.h"
#include "privlib.h" //include private library, which includes
//the "transact.h"
#define MAX_BUF 2000
#define NO_PREPARE 0
#define PREPARE 1
#define IDS_USER 0
#define idsFnLeft (IDS_USER+0)
#define idsFnConcat (IDS_USER+1)
#define idsFnInsert (IDS_USER+2)
#define idsFnLtrim (IDS_USER+3)
#define idsFnLength (IDS_USER+4)
#define idsFnLocate (IDS_USER+5)
#define idsFnLcase (IDS_USER+6)
#define idsFnRepeat (IDS_USER+7)
#define idsFnReplace (IDS_USER+8)
#define idsFnRight (IDS_USER+9)
#define idsFnRtrim (IDS_USER+10)
#define idsFnUcase (IDS_USER+11)
#define idsFnAcos (IDS_USER+12)
#define idsFnAsin (IDS_USER+13)
#define idsFnAtan (IDS_USER+14)
#define idsFnAtan2 (IDS_USER+15)
#define idsFnCeiling (IDS_USER+16)
#define idsFnCos (IDS_USER+17)
#define idsFnCot (IDS_USER+18)
#define idsFnExp (IDS_USER+19)
#define idsFnFloor (IDS_USER+20)
#define idsFnLog (IDS_USER+21)
#define idsFnMod (IDS_USER+22)
#define idsFnPi (IDS_USER+23)
#define idsFnRand (IDS_USER+24)
#define idsFnSign (IDS_USER+25)
#define idsFnSin (IDS_USER+26)
#define idsFnSqrt (IDS_USER+27)
#define idsFnTan (IDS_USER+28)
#define idsFnDayofweek (IDS_USER+29)
#define idsFnDayofyear (IDS_USER+30)
#define idsFnMonth (IDS_USER+31)
#define idsFnQuarter (IDS_USER+32)
#define idsFnWeek (IDS_USER+33)
#define idsFnYear (IDS_USER+34)
#define idsFnCurtime (IDS_USER+35)
#define idsFnHour (IDS_USER+36)
#define idsFnMinute (IDS_USER+37)
#define idsFnSecond (IDS_USER+38)
#define idsFnDatabase (IDS_USER+39)
#define idsFnIfnull1 (IDS_USER+40)
#define idsFnIfnull2 (IDS_USER+41)
#define idsConvertNotSupported (IDS_USER+42)
#define idsTestConvertFunctions (IDS_USER+43)
#define idsProcedureNotSupported (IDS_USER+44)
#define idsTestProcedures (IDS_USER+45)
#define idsTestOuterJoins (IDS_USER+46)
#define idsFnDiff (IDS_USER+47)
#define idsFnSoundex (IDS_USER+48)
#define idsFnSpace (IDS_USER+49)
#define idsFnDegrees (IDS_USER+50)
#define idsFnLog10 (IDS_USER+51)
#define idsFnPower (IDS_USER+52)
#define idsFnRadians (IDS_USER+53)
#define idsFnRound (IDS_USER+54)
#define idsFnTruncate (IDS_USER+55)
#define idsFnDayname (IDS_USER+56)
#define idsFnMonthname (IDS_USER+57)
#define idsFnTimestampadd (IDS_USER+58)
#define idsFnTimestampdiff (IDS_USER+59)
#define idsFnTimestamp (IDS_USER+60)
#define idsFnDate (IDS_USER+61)
#define idsFnTime (IDS_USER+62)
#define idsSelectProcText (IDS_USER+80)
#define idsProcCall (IDS_USER+81)
#define idsDropProc (IDS_USER+82)
#define idsLongProcOnly (IDS_USER+83)
#define idsInsertLikeTbl (IDS_USER+84)
#define idsSelectLikeShort (IDS_USER+85)
#define idsTestLikePreds (IDS_USER+86)
#define idsLongLJoin (IDS_USER+87)
#define idsShortLJoin (IDS_USER+88)
#define idsLongRJoin (IDS_USER+89)
#define idsShortRJoin (IDS_USER+90)
#define idsNestedLongJoin (IDS_USER+91)
#define idsNestedShortJoin (IDS_USER+92)
#define idsTestLeftOJSyntax (IDS_USER+93)
#define idsTestRightOJSyntax (IDS_USER+94)
#define idsTestNestedOJSyntax (IDS_USER+95)
#define idsInOutShortOJSyntax (IDS_USER+96)
#define idsInOutLongOJSyntax (IDS_USER+97)
#define idsNoLikePred (IDS_USER+98)
#define idsJetDropProc (IDS_USER+99)
#define idsProcCallQ (IDS_USER+100)
#define idsProcCallQPP (IDS_USER+101)
#define idsFnConcatNested (IDS_USER+102)
#define idsFnLeftNested (IDS_USER+103)
#define idsFnRightNested (IDS_USER+104)
#define idsFnLocateNested (IDS_USER+105)
#define idsFnSubstringNested (IDS_USER+106)
#define idsFnDiffNested (IDS_USER+107)
#define idsFnInsertNested (IDS_USER+108)
#define idsFnRepeatNested (IDS_USER+109)
#define idsFnReplaceNested (IDS_USER+110)
#define idsFnMultiInsert (IDS_USER+111)
#define idsFnMultiConcat (IDS_USER+112)
#define idsFnStringAndNumeric (IDS_USER+113)
#define idsCallFailed (IDS_USER+114)
#define idsSelectLikeEscape (IDS_USER+115)
#define idsSelectLikeNative (IDS_USER+116)
#define idsDropORAProc (IDS_USER+117)
#define idsSelectORAProcText (IDS_USER+118)
#define idsSelect (IDS_USER+119)
#define idsCanonShort (IDS_USER+120)
#define idsFromString (IDS_USER+121)
#define idsFnAscii (IDS_USER+122)
#define idsFnChar (IDS_USER+123)
#define idsFnSubstring (IDS_USER+124)
#define idsFnAbs (IDS_USER+125)
#define idsTestDateTimeFunctions (IDS_USER+126)
#define idsFnNow (IDS_USER+127)
#define idsFnCurdate (IDS_USER+128)
#define idsFnDayofmonth (IDS_USER+129)
#define idsFnUser (IDS_USER+130)
#define idsFnCHAR (IDS_USER+131)
#define idsFnVARCHAR (IDS_USER+132)
#define idsFnLONGVARCHAR (IDS_USER+133)
#define idsFnLONGVARBINARY (IDS_USER+134)
#define idsFnDECIMAL (IDS_USER+135)
#define idsFnNUMERIC (IDS_USER+136)
#define idsFnBIT (IDS_USER+137)
#define idsFnTINYINT (IDS_USER+138)
#define idsFnSMALLINT (IDS_USER+139)
#define idsFnINTEGER (IDS_USER+140)
#define idsFnBIGINT (IDS_USER+141)
#define idsFnREAL (IDS_USER+142)
#define idsFnFLOAT (IDS_USER+143)
#define idsFnDOUBLE (IDS_USER+144)
#define idsFnBINARY (IDS_USER+145)
#define idsFnVARBINARY (IDS_USER+146)
#define idsFnDATE (IDS_USER+147)
#define idsFnTIME (IDS_USER+148)
#define idsFnTIMESTAMP (IDS_USER+149)
#define idsFnWCHAR (IDS_USER+150)
#define idsFnWVARCHAR (IDS_USER+151)
#define idsFnWLONGVARCHAR (IDS_USER+152)
#define idsFnGUID (IDS_USER+153)
#define CHECKSTR 1
#define CHECKINT 2
#define CHECKFLOAT 3
#define CHECKISTR 4
#define CHECKTIMESTAMP 5
#define CHECKREAL 6
//-----------------------------------------------------------------------------
// String constants
//-----------------------------------------------------------------------------
typedef struct tagStringList {
UWORD id; // non-essential, but friendly field
WCHAR * wszItem;
} StringList;
const StringList pwszStringList[] =
{
{idsFnLeft ,L"fn LEFT('aBCdef',2)"},
{idsFnConcat ,L"fn CONCAT('Fire','Truck')"},
{idsFnInsert ,L"fn INSERT('FireTruck',5,4,'hose')"},
{idsFnLtrim ,L"fn LTRIM(' a BCdef')"},
{idsFnLength ,L"fn LENGTH(' a BCdef ')"},
{idsFnLocate ,L"fn LOCATE('st','forest estates',6)"},
{idsFnLcase ,L"fn LCASE('fIrEtRucK')"},
{idsFnRepeat ,L"fn REPEAT('t q',3)"},
{idsFnReplace ,L"fn REPLACE('forest estates','es','truck')"},
{idsFnRight ,L"fn RIGHT('forest estates',7)"},
{idsFnRtrim ,L"fn RTRIM(' forest estates ')"},
{idsFnUcase ,L"fn UCASE(' forest estates ')"},
{idsFnAcos ,L"fn ACOS(1)"},
{idsFnAsin ,L"fn ASIN(-1)"},
{idsFnAtan ,L"fn ATAN(2)"},
{idsFnAtan2 ,L"fn ATAN2(2,1)"},
{idsFnCeiling ,L"fn CEILING(1.09)"},
{idsFnCos ,L"fn COS(0)"},
{idsFnCot ,L"fn COT(.5)"},
{idsFnExp ,L"fn EXP(1)"},
{idsFnFloor ,L"fn FLOOR(1.09)"},
{idsFnLog ,L"fn LOG(10)"},
{idsFnMod ,L"fn MOD(10,6)"},
{idsFnPi ,L"fn PI()"},
{idsFnRand ,L"fn RAND(10)"},
{idsFnSign ,L"fn SIGN(10)"},
{idsFnSin ,L"fn SIN(.05)"},
{idsFnSqrt ,L"fn SQRT(9)"},
{idsFnTan ,L"fn TAN(2)"},
{idsFnDayofweek ,L"fn DAYOFWEEK({d '1991-02-26'})"},
{idsFnDayofyear ,L"fn DAYOFYEAR({d '1991-02-26'})"},
{idsFnMonth ,L"fn MONTH({d '1991-02-26'})"},
{idsFnQuarter ,L"fn QUARTER({d '1991-02-26'})"},
{idsFnWeek ,L"fn WEEK({d '1991-02-26'})"},
{idsFnYear ,L"fn YEAR({d '1991-02-26'})"},
{idsFnCurtime ,L"fn CURTIME()"},
{idsFnHour ,L"fn HOUR({t '14:49:19'})"},
{idsFnMinute ,L"fn MINUTE({t '14:49:19'})"},
{idsFnSecond ,L"fn SECOND({t '14:49:19'})"},
{idsFnDatabase ,L"fn DATABASE()"},
{idsFnIfnull1 ,L"fn IFNULL(NULL,4)"},
{idsFnIfnull2 ,L"fn IFNULL(-1,4)"},
{idsFnDiff ,L"fn DIFFERENCE('c','ab')"},
{idsFnSoundex ,L"fn SOUNDEX('ab')" },
{idsFnSpace ,L"fn SPACE(5)"},
{idsFnDegrees ,L"fn DEGREES(3)"},
{idsFnLog10 ,L"fn LOG10(97.1)"},
{idsFnPower ,L"fn POWER(9.600,3)"},
{idsFnRadians ,L"fn RADIANS(8.5)"},
{idsFnRound ,L"fn ROUND(97.56,1)"},
{idsFnTruncate ,L"fn TRUNCATE(97.56,1)"} ,
{idsFnDayname ,L"fn DAYNAME({d '1994-12-12'})"},
{idsFnMonthname ,L"fn MONTHNAME({d '1994-12-12'})"},
{idsFnTimestampadd ,L"fn TIMESTAMPADD(SQL_TSI_DAY,2,{d '1994-12-12'})"} ,
{idsFnTimestampdiff ,L"fn TIMESTAMPDIFF(SQL_TSI_MONTH,{d '1994-11-15'},{d '1994-12-12'})"},
{idsFnTimestamp ,L"ts '1994-12-12 01:12:56'" },
{idsFnDate ,L"d '1995-01-15'"},
{idsFnTime ,L"t '07:15:26'"},
{idsFnConcatNested ,L"fn concat({fn ucase('aaa')},{fn ucase('bbb')})"},
{idsFnLeftNested ,L"fn left('abcdefg',{fn ceiling(2)})" },
{idsFnRightNested ,L"fn right('abcdefg',{fn ceiling(2)})"},
{idsFnLocateNested ,L"fn locate({fn lcase('A')},'bbac')"},
{idsFnSubstringNested ,L"fn substring('abcdefg',{fn floor(2)},{fn ceiling(2)})"},
{idsFnDiffNested ,L"fn DIFFERENCE({fn lcase('A')},{fn lcase('BC')})"},
{idsFnInsertNested ,L"fn INSERT('abcdefg',2,3,{fn ucase('xy')})"},
{idsFnRepeatNested ,L"fn REPEAT({fn lcase('ABC')},3)"},
{idsFnReplaceNested ,L"fn REPLACE('acbcdc',{fn lcase('C')},{fn ucase('x')})"},
{idsFnMultiInsert ,L"fn INSERT({fn LCASE({fn CONCAT('12345678',{fn SPACE(4)})})},4,1,'XWZ')"},
{idsFnMultiConcat ,L"fn CONCAT({fn UCASE({fn CHAR(99)})}, {fn SPACE(4)})"},
{idsFnStringAndNumeric ,L"fn CHAR({fn ABS({fn FLOOR(99)})})"},
{idsConvertNotSupported ,L"Convert functions are not supported"},
{idsTestConvertFunctions ,L"Data Type Conversions"},
{idsProcedureNotSupported ,L"Procedures are not supported"},
{idsTestProcedures ,L"Procedure tests"},
{idsTestOuterJoins ,L"OuterJoin tests"},
{idsSelectProcText ,L"create proc %s as select * from %s" },
{idsProcCall ,L"{call %s}"},
{idsDropProc ,L"drop proc %s"},
{idsDropORAProc ,L"drop procedure %s"},
{idsSelectORAProcText ,L"create or replace procedure %s as begin select * from %s; end;" },
{idsLongProcOnly ,L"--(* vendor(Microsoft),product(ODBC) call %s *)--" },
{idsInsertLikeTbl ,L"insert into %s values ('%%a')"},
{idsSelectLikeEscape ,L"select col1 from %s where col1 like '%s%%a__%%' --(*vendor(Microsoft),product(ODBC) escape '%s'*)--"},
{idsSelectLikeShort ,L"select col1 from %s where col1 like '%s%%a__%%' {escape '%s'}"},
{idsSelectLikeNative ,L"select col1 from %s where col1 like '%s%%a__%%' ESCAPE '%s'"},
{idsTestLikePreds ,L"LIKE Predicate tests" },
{idsLongLJoin ,L"select * from --(*vendor(Microsoft),product(ODBC) oj %s left outer join %s on %s.%s%s%s.%s*)--"},
{idsShortLJoin ,L"select * from {oj %s left outer join %s on %s.%s%s%s.%s}" },
{idsLongRJoin ,L"select * from --(*vendor(Microsoft),product(ODBC) oj %s right outer join %s on %s.%s%s%s.%s*)--"},
{idsShortRJoin ,L"select * from {oj %s right outer join %s on %s.%s%s%s.%s}" },
{idsNestedLongJoin ,L"select %s.%s from --(*vendor(Microsoft),product(ODBC) oj %s left outer join %s left outer join %s on %s.%s%s%s.%s on %s.%s%s%s.%s*)--"},
{idsNestedShortJoin ,L"select %s.%s from {oj %s left outer join %s left outer join %s on %s.%s%s%s.%s on %s.%s%s%s.%s}"},
{idsTestLeftOJSyntax ,L"Left Outer Join escape syntax" },
{idsTestRightOJSyntax ,L"Right Outer Join escape syntax" },
{idsTestNestedOJSyntax ,L"Nested Outer Join escape syntax" },
{idsInOutShortOJSyntax ,L"select * from %s, {oj %s left outer join %s on %s.%s%s%s.%s} where %s.%s%s%s.%s" },
{idsInOutLongOJSyntax ,L"select * from %s, --(*vendor(Microsoft),product(ODBC) oj %s left outer join %s on %s.%s%s%s.%s*)-- where %s.%s%s%s.%s" },
{idsNoLikePred ,L"LIKE Predicate not supported"},
{idsJetDropProc ,L"drop table %s" },
{idsProcCallQ ,L"{?=call %s}"},
{idsProcCallQPP ,L"{?=call %s()}"},
{idsSelect ,L"Select "},
{idsFnAscii ,L"fn ASCII('Bz')"},
{idsFnChar ,L"fn CHAR(102)"},
{idsFnSubstring ,L"fn SUBSTRING(' forest estates',5,4)"},
{idsFnAbs ,L"fn ABS(-123)"},
{idsTestDateTimeFunctions ,L"Time and Date Functions"},
{idsFnNow ,L"fn NOW()"},
{idsFnCurdate ,L"fn CURDATE()"},
{idsFnDayofmonth ,L"fn DAYOFMONTH({d '1991-02-26'})"},
{idsFnUser ,L"fn USER()"},
{idsFnCHAR ,L"fn CONVERT(%s,SQL_CHAR)"},
{idsFnVARCHAR ,L"fn CONVERT(%s,SQL_VARCHAR)"},
{idsFnLONGVARCHAR ,L"fn CONVERT(%s,SQL_LONGVARCHAR)"},
{idsFnLONGVARBINARY ,L"fn CONVERT(%s,SQL_LONGVARBINARY)"},
{idsFnDECIMAL ,L"fn CONVERT(%s,SQL_DECIMAL)"},
{idsFnNUMERIC ,L"fn CONVERT(%s,SQL_NUMERIC)"},
{idsFnBIT ,L"fn CONVERT(%s,SQL_BIT)"},
{idsFnTINYINT ,L"fn CONVERT(%s,SQL_TINYINT)"},
{idsFnSMALLINT ,L"fn CONVERT(%s,SQL_SMALLINT)"},
{idsFnINTEGER ,L"fn CONVERT(%s,SQL_INTEGER)"},
{idsFnBIGINT ,L"fn CONVERT(%s,SQL_BIGINT)"},
{idsFnREAL ,L"fn CONVERT(%s,SQL_REAL)"},
{idsFnFLOAT ,L"fn CONVERT(%s,SQL_FLOAT)"},
{idsFnDOUBLE ,L"fn CONVERT(%s,SQL_DOUBLE)"},
{idsFnBINARY ,L"fn CONVERT(%s,SQL_BINARY)"},
{idsFnVARBINARY ,L"fn CONVERT(%s,SQL_VARBINARY)"},
{idsFnDATE ,L"fn CONVERT(%s,SQL_DATE)"},
{idsFnTIME ,L"fn CONVERT(%s,SQL_TIME)"},
{idsFnTIMESTAMP ,L"fn CONVERT(%s,SQL_TIMESTAMP)"},
{idsFnWCHAR ,L"fn CONVERT(%s,SQL_WCHAR)"},
{idsFnWVARCHAR ,L"fn CONVERT(%s,SQL_WVARCHAR)"},
{idsFnWLONGVARCHAR ,L"fn CONVERT(%s,SQL_WLONGVARCHAR)"},
{idsFnGUID ,L"fn CONVERT(%s,SQL_GUID)"},
{idsCallFailed ,L"ExecDirect call failed even though the string function was supported."},
{idsCanonShort ,L"{%s}"},
{idsFromString ,L" from %s"}
};
struct ValueInfo
{
DBSTATUS dbsStatus;
DBLENGTH cbLength;
void *pValue;
};
/* SQL_STRING_FUNCTIONS functions */
#define SQL_FN_STR_CONCAT 0x00000001L
#define SQL_FN_STR_INSERT 0x00000002L
#define SQL_FN_STR_LEFT 0x00000004L
#define SQL_FN_STR_LTRIM 0x00000008L
#define SQL_FN_STR_LENGTH 0x00000010L
#define SQL_FN_STR_LOCATE 0x00000020L
#define SQL_FN_STR_LCASE 0x00000040L
#define SQL_FN_STR_REPEAT 0x00000080L
#define SQL_FN_STR_REPLACE 0x00000100L
#define SQL_FN_STR_RIGHT 0x00000200L
#define SQL_FN_STR_RTRIM 0x00000400L
#define SQL_FN_STR_SUBSTRING 0x00000800L
#define SQL_FN_STR_UCASE 0x00001000L
#define SQL_FN_STR_ASCII 0x00002000L
#define SQL_FN_STR_CHAR 0x00004000L
#define SQL_FN_STR_DIFFERENCE 0x00008000L
#define SQL_FN_STR_LOCATE_2 0x00010000L
#define SQL_FN_STR_SOUNDEX 0x00020000L
#define SQL_FN_STR_SPACE 0x00040000L
#define SQL_FN_STR_BIT_LENGTH 0x00080000L
#define SQL_FN_STR_CHAR_LENGTH 0x00100000L
#define SQL_FN_STR_CHARACTER_LENGTH 0x00200000L
#define SQL_FN_STR_OCTET_LENGTH 0x00400000L
#define SQL_FN_STR_POSITION 0x00800000L
/* SQL_SQL92_STRING_FUNCTIONS */
#define SQL_SSF_CONVERT 0x00000001L
#define SQL_SSF_LOWER 0x00000002L
#define SQL_SSF_UPPER 0x00000004L
#define SQL_SSF_SUBSTRING 0x00000008L
#define SQL_SSF_TRANSLATE 0x00000010L
#define SQL_SSF_TRIM_BOTH 0x00000020L
#define SQL_SSF_TRIM_LEADING 0x00000040L
#define SQL_SSF_TRIM_TRAILING 0x00000080L
/* SQL_NUMERIC_FUNCTIONS functions */
#define SQL_FN_NUM_ABS 0x00000001L
#define SQL_FN_NUM_ACOS 0x00000002L
#define SQL_FN_NUM_ASIN 0x00000004L
#define SQL_FN_NUM_ATAN 0x00000008L
#define SQL_FN_NUM_ATAN2 0x00000010L
#define SQL_FN_NUM_CEILING 0x00000020L
#define SQL_FN_NUM_COS 0x00000040L
#define SQL_FN_NUM_COT 0x00000080L
#define SQL_FN_NUM_EXP 0x00000100L
#define SQL_FN_NUM_FLOOR 0x00000200L
#define SQL_FN_NUM_LOG 0x00000400L
#define SQL_FN_NUM_MOD 0x00000800L
#define SQL_FN_NUM_SIGN 0x00001000L
#define SQL_FN_NUM_SIN 0x00002000L
#define SQL_FN_NUM_SQRT 0x00004000L
#define SQL_FN_NUM_TAN 0x00008000L
#define SQL_FN_NUM_PI 0x00010000L
#define SQL_FN_NUM_RAND 0x00020000L
#define SQL_FN_NUM_DEGREES 0x00040000L
#define SQL_FN_NUM_LOG10 0x00080000L
#define SQL_FN_NUM_POWER 0x00100000L
#define SQL_FN_NUM_RADIANS 0x00200000L
#define SQL_FN_NUM_ROUND 0x00400000L
#define SQL_FN_NUM_TRUNCATE 0x00800000L
/* SQL_TIMEDATE_FUNCTIONS functions */
#define SQL_FN_TD_NOW 0x00000001L
#define SQL_FN_TD_CURDATE 0x00000002L
#define SQL_FN_TD_DAYOFMONTH 0x00000004L
#define SQL_FN_TD_DAYOFWEEK 0x00000008L
#define SQL_FN_TD_DAYOFYEAR 0x00000010L
#define SQL_FN_TD_MONTH 0x00000020L
#define SQL_FN_TD_QUARTER 0x00000040L
#define SQL_FN_TD_WEEK 0x00000080L
#define SQL_FN_TD_YEAR 0x00000100L
#define SQL_FN_TD_CURTIME 0x00000200L
#define SQL_FN_TD_HOUR 0x00000400L
#define SQL_FN_TD_MINUTE 0x00000800L
#define SQL_FN_TD_SECOND 0x00001000L
#define SQL_FN_TD_TIMESTAMPADD 0x00002000L
#define SQL_FN_TD_TIMESTAMPDIFF 0x00004000L
#define SQL_FN_TD_DAYNAME 0x00008000L
#define SQL_FN_TD_MONTHNAME 0x00010000L
#define SQL_FN_TD_CURRENT_DATE 0x00020000L
#define SQL_FN_TD_CURRENT_TIME 0x00040000L
#define SQL_FN_TD_CURRENT_TIMESTAMP 0x00080000L
#define SQL_FN_TD_EXTRACT 0x00100000L
/* SQL_SYSTEM_FUNCTIONS functions */
#define SQL_FN_SYS_USERNAME 0x00000001L
#define SQL_FN_SYS_DBNAME 0x00000002L
#define SQL_FN_SYS_IFNULL 0x00000004L
/* SQL_OJ_CAPABILITIES bitmasks */
/* NB: this means 'outer join', not what you may be thinking */
#define SQL_OJ_LEFT 0x00000001L
#define SQL_OJ_RIGHT 0x00000002L
#define SQL_OJ_FULL 0x00000004L
#define SQL_OJ_NESTED 0x00000008L
#define SQL_OJ_NOT_ORDERED 0x00000010L
#define SQL_OJ_INNER 0x00000020L
#define SQL_OJ_ALL_COMPARISON_OPS 0x00000040L
/* SQL_CONVERT_* return value bitmasks */
#define SQL_CVT_CHAR 0x00000001L
#define SQL_CVT_NUMERIC 0x00000002L
#define SQL_CVT_DECIMAL 0x00000004L
#define SQL_CVT_INTEGER 0x00000008L
#define SQL_CVT_SMALLINT 0x00000010L
#define SQL_CVT_FLOAT 0x00000020L
#define SQL_CVT_REAL 0x00000040L
#define SQL_CVT_DOUBLE 0x00000080L
#define SQL_CVT_VARCHAR 0x00000100L
#define SQL_CVT_LONGVARCHAR 0x00000200L
#define SQL_CVT_BINARY 0x00000400L
#define SQL_CVT_VARBINARY 0x00000800L
#define SQL_CVT_BIT 0x00001000L
#define SQL_CVT_TINYINT 0x00002000L
#define SQL_CVT_BIGINT 0x00004000L
#define SQL_CVT_DATE 0x00008000L
#define SQL_CVT_TIME 0x00010000L
#define SQL_CVT_TIMESTAMP 0x00020000L
#define SQL_CVT_LONGVARBINARY 0x00040000L
#define SQL_CVT_INTERVAL_YEAR_MONTH 0x00080000L
#define SQL_CVT_INTERVAL_DAY_TIME 0x00100000L
#define SQL_CVT_WCHAR 0x00200000L
#define SQL_CVT_WLONGVARCHAR 0x00400000L
#define SQL_CVT_WVARCHAR 0x00800000L
#define SQL_CVT_GUID 0x01000000L // MAY NEED TO CHANGE PENDING ODBC HEADER
#define SQL_CONVERT_BIGINT 53
#define SQL_CONVERT_BINARY 54
#define SQL_CONVERT_BIT 55
#define SQL_CONVERT_CHAR 56
#define SQL_CONVERT_DATE 57
#define SQL_CONVERT_DECIMAL 58
#define SQL_CONVERT_DOUBLE 59
#define SQL_CONVERT_FLOAT 60
#define SQL_CONVERT_INTEGER 61
#define SQL_CONVERT_LONGVARCHAR 62
#define SQL_CONVERT_NUMERIC 63
#define SQL_CONVERT_REAL 64
#define SQL_CONVERT_SMALLINT 65
#define SQL_CONVERT_TIME 66
#define SQL_CONVERT_TIMESTAMP 67
#define SQL_CONVERT_TINYINT 68
#define SQL_CONVERT_VARBINARY 69
#define SQL_CONVERT_VARCHAR 70
#define SQL_CONVERT_LONGVARBINARY 71
#define SQL_CONVERT_GUID 72 // MAY NEED TO CHANGE PENDING ODBC HEADER
#define SQL_CONVERT_WCHAR 122
#define SQL_CONVERT_WVARCHAR 126
#define SQL_CONVERT_WLONGVARCHAR 125
#define SQL_CHAR 1
#define SQL_NUMERIC 2
#define SQL_DECIMAL 3
#define SQL_INTEGER 4
#define SQL_SMALLINT 5
#define SQL_FLOAT 6
#define SQL_REAL 7
#define SQL_DOUBLE 8
#define SQL_VARCHAR 12
#define SQL_DATE 9
#define SQL_TIME 10
#define SQL_TIMESTAMP 11
#define SQL_LONGVARCHAR (-1)
#define SQL_BINARY (-2)
#define SQL_VARBINARY (-3)
#define SQL_LONGVARBINARY (-4)
#define SQL_BIGINT (-5)
#define SQL_TINYINT (-6)
#define SQL_BIT (-7)
#define SQL_WCHAR (-8)
#define SQL_WVARCHAR (-9)
#define SQL_WLONGVARCHAR (-10)
#define SQL_GUID (-11)
#define DRVR_SQLSRVR 0 // SQL Server
#define DRVR_ORACLE 1 // Oracle
#define DRVR_QJET 2 // Access
#endif //_SCALAR_H_