00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 typedef struct tdsnumeric
00026 {
00027 unsigned char precision;
00028 unsigned char scale;
00029 unsigned char array[33];
00030 } TDS_NUMERIC;
00031
00032 typedef struct tdsoldmoney
00033 {
00034 TDS_INT mnyhigh;
00035 TDS_UINT mnylow;
00036 } TDS_OLD_MONEY;
00037
00038 typedef union tdsmoney
00039 {
00040 TDS_OLD_MONEY tdsoldmoney;
00041 TDS_INT8 mny;
00042 } TDS_MONEY;
00043
00044 typedef struct tdsmoney4
00045 {
00046 TDS_INT mny4;
00047 } TDS_MONEY4;
00048
00049 typedef struct tdsdatetime
00050 {
00051 TDS_INT dtdays;
00052 TDS_INT dttime;
00053 } TDS_DATETIME;
00054
00055 typedef struct tdsdatetime4
00056 {
00057 TDS_USMALLINT days;
00058 TDS_USMALLINT minutes;
00059 } TDS_DATETIME4;
00060
00061 typedef struct tdsunique
00062 {
00063 TDS_UINT Data1;
00064 TDS_USMALLINT Data2;
00065 TDS_USMALLINT Data3;
00066 TDS_UCHAR Data4[8];
00067 } TDS_UNIQUE;
00068
00069 #define TDS5_PARAMFMT2_TOKEN 32
00070 #define TDS_LANGUAGE_TOKEN 33
00071 #define TDS_ORDERBY2_TOKEN 34
00072 #define TDS_ROWFMT2_TOKEN 97
00073 #define TDS_LOGOUT_TOKEN 113
00074 #define TDS_RETURNSTATUS_TOKEN 121
00075 #define TDS_PROCID_TOKEN 124
00076 #define TDS7_RESULT_TOKEN 129
00077 #define TDS7_COMPUTE_RESULT_TOKEN 136
00078 #define TDS_COLNAME_TOKEN 160
00079 #define TDS_COLFMT_TOKEN 161
00080 #define TDS_DYNAMIC2_TOKEN 163
00081 #define TDS_TABNAME_TOKEN 164
00082 #define TDS_COLINFO_TOKEN 165
00083 #define TDS_OPTIONCMD_TOKEN 166
00084 #define TDS_COMPUTE_NAMES_TOKEN 167
00085 #define TDS_COMPUTE_RESULT_TOKEN 168
00086 #define TDS_ORDERBY_TOKEN 169
00087 #define TDS_ERROR_TOKEN 170
00088 #define TDS_INFO_TOKEN 171
00089 #define TDS_PARAM_TOKEN 172
00090 #define TDS_LOGINACK_TOKEN 173
00091 #define TDS_CONTROL_TOKEN 174
00092 #define TDS_ROW_TOKEN 209
00093 #define TDS_NBC_ROW_TOKEN 210
00094 #define TDS_CMP_ROW_TOKEN 211
00095 #define TDS5_PARAMS_TOKEN 215
00096 #define TDS_CAPABILITY_TOKEN 226
00097 #define TDS_ENVCHANGE_TOKEN 227
00098 #define TDS_EED_TOKEN 229
00099 #define TDS_DBRPC_TOKEN 230
00100 #define TDS5_DYNAMIC_TOKEN 231
00101 #define TDS5_PARAMFMT_TOKEN 236
00102 #define TDS_AUTH_TOKEN 237
00103 #define TDS_RESULT_TOKEN 238
00104 #define TDS_DONE_TOKEN 253
00105 #define TDS_DONEPROC_TOKEN 254
00106 #define TDS_DONEINPROC_TOKEN 255
00107
00108
00109 #define TDS_CURCLOSE_TOKEN 128
00110 #define TDS_CURDELETE_TOKEN 129
00111 #define TDS_CURFETCH_TOKEN 130
00112 #define TDS_CURINFO_TOKEN 131
00113 #define TDS_CUROPEN_TOKEN 132
00114 #define TDS_CURDECLARE_TOKEN 134
00115
00116
00117
00118 #define TDS_ENV_DATABASE 1
00119 #define TDS_ENV_LANG 2
00120 #define TDS_ENV_CHARSET 3
00121 #define TDS_ENV_PACKSIZE 4
00122 #define TDS_ENV_LCID 5
00123 #define TDS_ENV_SQLCOLLATION 7
00124 #define TDS_ENV_BEGINTRANS 8
00125 #define TDS_ENV_COMMITTRANS 9
00126 #define TDS_ENV_ROLLBACKTRANS 10
00127
00128
00129 #define TDS_SP_CURSOR 1
00130 #define TDS_SP_CURSOROPEN 2
00131 #define TDS_SP_CURSORPREPARE 3
00132 #define TDS_SP_CURSOREXECUTE 4
00133 #define TDS_SP_CURSORPREPEXEC 5
00134 #define TDS_SP_CURSORUNPREPARE 6
00135 #define TDS_SP_CURSORFETCH 7
00136 #define TDS_SP_CURSOROPTION 8
00137 #define TDS_SP_CURSORCLOSE 9
00138 #define TDS_SP_EXECUTESQL 10
00139 #define TDS_SP_PREPARE 11
00140 #define TDS_SP_EXECUTE 12
00141 #define TDS_SP_PREPEXEC 13
00142 #define TDS_SP_PREPEXECRPC 14
00143 #define TDS_SP_UNPREPARE 15
00144
00145
00146
00147
00148
00149
00150 typedef enum
00151 {
00152 SYBCHAR = 47,
00153 SYBVARCHAR = 39,
00154 SYBINTN = 38,
00155 SYBINT1 = 48,
00156 SYBINT2 = 52,
00157 SYBINT4 = 56,
00158 SYBFLT8 = 62,
00159 SYBDATETIME = 61,
00160 SYBBIT = 50,
00161 SYBTEXT = 35,
00162 SYBNTEXT = 99,
00163 SYBIMAGE = 34,
00164 SYBMONEY4 = 122,
00165 SYBMONEY = 60,
00166 SYBDATETIME4 = 58,
00167 SYBREAL = 59,
00168 SYBBINARY = 45,
00169 SYBVOID = 31,
00170 SYBVARBINARY = 37,
00171 SYBBITN = 104,
00172 SYBNUMERIC = 108,
00173 SYBDECIMAL = 106,
00174 SYBFLTN = 109,
00175 SYBMONEYN = 110,
00176 SYBDATETIMN = 111,
00177
00178
00179
00180
00181 SYBNVARCHAR = 103,
00182 SYBINT8 = 127,
00183 XSYBCHAR = 175,
00184 XSYBVARCHAR = 167,
00185 XSYBNVARCHAR = 231,
00186 XSYBNCHAR = 239,
00187 XSYBVARBINARY = 165,
00188 XSYBBINARY = 173,
00189 SYBUNIQUE = 36,
00190 SYBVARIANT = 98,
00191 SYBMSUDT = 240,
00192 SYBMSXML = 241,
00193 SYBMSDATE = 40,
00194 SYBMSTIME = 41,
00195 SYBMSDATETIME2 = 42,
00196 SYBMSDATETIMEOFFSET = 43,
00197
00198
00199
00200
00201 SYBLONGBINARY = 225,
00202 SYBUINT1 = 64,
00203 SYBUINT2 = 65,
00204 SYBUINT4 = 66,
00205 SYBUINT8 = 67,
00206 SYBBLOB = 36,
00207 SYBBOUNDARY = 104,
00208 SYBDATE = 49,
00209 SYBDATEN = 123,
00210 SYB5INT8 = 191,
00211 SYBINTERVAL = 46,
00212 SYBLONGCHAR = 175,
00213 SYBSENSITIVITY = 103,
00214 SYBSINT1 = 176,
00215 SYBTIME = 51,
00216 SYBTIMEN = 147,
00217 SYBUINTN = 68,
00218 SYBUNITEXT = 174,
00219 SYBXML = 163,
00220
00221 } TDS_SERVER_TYPE;
00222
00223 typedef enum
00224 {
00225 USER_UNICHAR_TYPE = 34,
00226 USER_UNIVARCHAR_TYPE = 35
00227 } TDS_USER_TYPE;
00228
00229
00230 #define SYBAOPCNT 0x4b
00231 #define SYBAOPCNTU 0x4c
00232 #define SYBAOPSUM 0x4d
00233 #define SYBAOPSUMU 0x4e
00234 #define SYBAOPAVG 0x4f
00235 #define SYBAOPAVGU 0x50
00236 #define SYBAOPMIN 0x51
00237 #define SYBAOPMAX 0x52
00238
00239
00240 #define SYBAOPCNT_BIG 0x09
00241 #define SYBAOPSTDEV 0x30
00242 #define SYBAOPSTDEVP 0x31
00243 #define SYBAOPVAR 0x32
00244 #define SYBAOPVARP 0x33
00245 #define SYBAOPCHECKSUM_AGG 0x72
00246
00250 typedef enum
00251 {
00252 TDS_OPT_SET = 1
00253 , TDS_OPT_DEFAULT = 2
00254 , TDS_OPT_LIST = 3
00255 , TDS_OPT_INFO = 4
00256 } TDS_OPTION_CMD;
00257
00258 typedef enum
00259 {
00260 TDS_OPT_DATEFIRST = 1
00261 , TDS_OPT_TEXTSIZE = 2
00262 , TDS_OPT_STAT_TIME = 3
00263 , TDS_OPT_STAT_IO = 4
00264 , TDS_OPT_ROWCOUNT = 5
00265 , TDS_OPT_NATLANG = 6
00266 , TDS_OPT_DATEFORMAT = 7
00267 , TDS_OPT_ISOLATION = 8
00268 , TDS_OPT_AUTHON = 9
00269 , TDS_OPT_CHARSET = 10
00270 , TDS_OPT_SHOWPLAN = 13
00271 , TDS_OPT_NOEXEC = 14
00272 , TDS_OPT_ARITHIGNOREON = 15
00273 , TDS_OPT_ARITHABORTON = 17
00274 , TDS_OPT_PARSEONLY = 18
00275 , TDS_OPT_GETDATA = 20
00276 , TDS_OPT_NOCOUNT = 21
00277 , TDS_OPT_FORCEPLAN = 23
00278 , TDS_OPT_FORMATONLY = 24
00279 , TDS_OPT_CHAINXACTS = 25
00280 , TDS_OPT_CURCLOSEONXACT = 26
00281 , TDS_OPT_FIPSFLAG = 27
00282 , TDS_OPT_RESTREES = 28
00283 , TDS_OPT_IDENTITYON = 29
00284 , TDS_OPT_CURREAD = 30
00285 , TDS_OPT_CURWRITE = 31
00286 , TDS_OPT_IDENTITYOFF = 32
00287 , TDS_OPT_AUTHOFF = 33
00288 , TDS_OPT_ANSINULL = 34
00289 , TDS_OPT_QUOTED_IDENT = 35
00290 , TDS_OPT_ARITHIGNOREOFF = 36
00291 , TDS_OPT_ARITHABORTOFF = 37
00292 , TDS_OPT_TRUNCABORT = 38
00293 } TDS_OPTION;
00294
00295 enum {
00296 TDS_OPT_ARITHOVERFLOW = 0x01,
00297 TDS_OPT_NUMERICTRUNC = 0x02
00298 };
00299
00300 enum TDS_OPT_DATEFIRST_CHOICE
00301 {
00302 TDS_OPT_MONDAY = 1, TDS_OPT_TUESDAY = 2, TDS_OPT_WEDNESDAY = 3, TDS_OPT_THURSDAY = 4, TDS_OPT_FRIDAY = 5, TDS_OPT_SATURDAY =
00303 6, TDS_OPT_SUNDAY = 7
00304 };
00305
00306 enum TDS_OPT_DATEFORMAT_CHOICE
00307 {
00308 TDS_OPT_FMTMDY = 1, TDS_OPT_FMTDMY = 2, TDS_OPT_FMTYMD = 3, TDS_OPT_FMTYDM = 4, TDS_OPT_FMTMYD = 5, TDS_OPT_FMTDYM = 6
00309 };
00310 enum TDS_OPT_ISOLATION_CHOICE
00311 {
00312 TDS_OPT_LEVEL1 = 1, TDS_OPT_LEVEL3 = 3
00313 };
00314
00315
00316 typedef enum tds_packet_type
00317 {
00318 TDS_QUERY = 1,
00319 TDS_LOGIN = 2,
00320 TDS_RPC = 3,
00321 TDS_REPLY = 4,
00322 TDS_CANCEL = 6,
00323 TDS_BULK = 7,
00324 TDS7_TRANS = 14,
00325 TDS_NORMAL = 15,
00326 TDS7_LOGIN = 16,
00327 TDS7_AUTH = 17,
00328 TDS71_PRELOGIN = 18,
00329 TDS71_SMP = 0x53
00330 } TDS_PACKET_TYPE;
00331
00335 typedef struct
00336 {
00337 TDS_USMALLINT locale_id;
00338 TDS_USMALLINT flags;
00339 TDS_UCHAR charset_id;
00340 } TDS71_COLLATION;
00341
00342
00343 #define TDS_SF_BIN (TDS_USMALLINT) 0x100
00344 #define TDS_SF_WIDTH_INSENSITIVE (TDS_USMALLINT) 0x080
00345 #define TDS_SF_KATATYPE_INSENSITIVE (TDS_USMALLINT) 0x040
00346 #define TDS_SF_ACCENT_SENSITIVE (TDS_USMALLINT) 0x020
00347 #define TDS_SF_CASE_INSENSITIVE (TDS_USMALLINT) 0x010
00348
00349
00350 #define TDS_UT_TIMESTAMP 80
00351
00352
00353
00354 enum option_flag1_values {
00355 TDS_BYTE_ORDER_X86 = 0,
00356 TDS_CHARSET_ASCII = 0,
00357 TDS_DUMPLOAD_ON = 0,
00358 TDS_FLOAT_IEEE_754 = 0,
00359 TDS_INIT_DB_WARN = 0,
00360 TDS_SET_LANG_OFF = 0,
00361 TDS_USE_DB_SILENT = 0,
00362 TDS_BYTE_ORDER_68000 = 0x01,
00363 TDS_CHARSET_EBDDIC = 0x02,
00364 TDS_FLOAT_VAX = 0x04,
00365 TDS_FLOAT_ND5000 = 0x08,
00366 TDS_DUMPLOAD_OFF = 0x10,
00367 TDS_USE_DB_NOTIFY = 0x20,
00368 TDS_INIT_DB_FATAL = 0x40,
00369 TDS_SET_LANG_ON = 0x80
00370 };
00371
00372 enum option_flag2_values {
00373 TDS_INIT_LANG_WARN = 0,
00374 TDS_INTEGRATED_SECURTY_OFF = 0,
00375 TDS_ODBC_OFF = 0,
00376 TDS_USER_NORMAL = 0,
00377 TDS_INIT_LANG_REQUIRED = 0x01,
00378 TDS_ODBC_ON = 0x02,
00379 TDS_TRANSACTION_BOUNDARY71 = 0x04,
00380 TDS_CACHE_CONNECT71 = 0x08,
00381 TDS_USER_SERVER = 0x10,
00382 TDS_USER_REMUSER = 0x20,
00383 TDS_USER_SQLREPL = 0x40,
00384 TDS_INTEGRATED_SECURITY_ON = 0x80
00385 };
00386
00387 enum option_flag3_values {
00388 TDS_RESTRICTED_COLLATION = 0,
00389 TDS_CHANGE_PASSWORD = 0x01,
00390 TDS_SEND_YUKON_BINARY_XML = 0x02,
00391 TDS_REQUEST_USER_INSTANCE = 0x04,
00392 TDS_UNKNOWN_COLLATION_HANDLING = 0x08,
00393 TDS_ANY_COLLATION = 0x10
00394 };
00395