31 #define SQL_DIAG_SS_MSGSTATE (-1150)
32 #define SQL_DIAG_SS_LINE (-1154)
34 #define SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT 1233
35 #define SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT 1234
36 #define SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS 1235
38 #ifndef SQL_SS_LENGTH_UNLIMITED
39 #define SQL_SS_LENGTH_UNLIMITED 0
42 #ifndef SQL_COPT_SS_BASE
43 #define SQL_COPT_SS_BASE 1200
46 #ifndef SQL_COPT_SS_MARS_ENABLED
47 #define SQL_COPT_SS_MARS_ENABLED (SQL_COPT_SS_BASE+24)
50 #ifndef SQL_COPT_SS_OLDPWD
51 #define SQL_COPT_SS_OLDPWD (SQL_COPT_SS_BASE+26)
54 #define SQL_INFO_FREETDS_TDS_VERSION 1300
55 #define SQL_INFO_FREETDS_SOCKET 1301
57 #ifndef SQL_MARS_ENABLED_NO
58 #define SQL_MARS_ENABLED_NO 0
61 #ifndef SQL_MARS_ENABLED_YES
62 #define SQL_MARS_ENABLED_YES 1
65 #ifndef SQL_SS_VARIANT
66 #define SQL_SS_VARIANT (-150)
70 #define SQL_SS_UDT (-151)
74 #define SQL_SS_XML (-152)
78 #define SQL_SS_TABLE (-153)
82 #define SQL_SS_TIME2 (-154)
85 #ifndef SQL_SS_TIMESTAMPOFFSET
86 #define SQL_SS_TIMESTAMPOFFSET (-155)
92 #ifndef SQL_C_SS_TIME2
93 #define SQL_C_SS_TIME2 (0x4000)
96 #ifndef SQL_C_SS_TIMESTAMPOFFSET
97 #define SQL_C_SS_TIMESTAMPOFFSET (0x4001)
100 #ifndef SQL_CA_SS_BASE
101 #define SQL_CA_SS_BASE 1200
104 #ifndef SQL_CA_SS_UDT_CATALOG_NAME
105 #define SQL_CA_SS_UDT_CATALOG_NAME (SQL_CA_SS_BASE+18)
108 #ifndef SQL_CA_SS_UDT_SCHEMA_NAME
109 #define SQL_CA_SS_UDT_SCHEMA_NAME (SQL_CA_SS_BASE+19)
112 #ifndef SQL_CA_SS_UDT_TYPE_NAME
113 #define SQL_CA_SS_UDT_TYPE_NAME (SQL_CA_SS_BASE+20)
116 #ifndef SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME
117 #define SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME (SQL_CA_SS_BASE+21)
120 #ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME
121 #define SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME (SQL_CA_SS_BASE+22)
124 #ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME
125 #define SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME (SQL_CA_SS_BASE+23)
128 #ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_NAME
129 #define SQL_CA_SS_XML_SCHEMACOLLECTION_NAME (SQL_CA_SS_BASE+24)
136 SQLUINTEGER fraction;
146 SQLUINTEGER fraction;
147 SQLSMALLINT timezone_hour;
148 SQLSMALLINT timezone_minute;
161 #ifndef BCPKEEPIDENTITY
162 #define BCPKEEPIDENTITY 8
168 #define BCP_DIRECTION_IN 1
170 #define SQL_COPT_SS_BCP (SQL_COPT_SS_BASE+19)
171 #define SQL_BCP_OFF 0
174 #define SQL_COPT_TDSODBC_IMPL_BASE 1500
175 #define SQL_COPT_TDSODBC_IMPL_BCP_INITA (SQL_COPT_TDSODBC_IMPL_BASE)
176 #define SQL_COPT_TDSODBC_IMPL_BCP_CONTROL (SQL_COPT_TDSODBC_IMPL_BASE+1)
177 #define SQL_COPT_TDSODBC_IMPL_BCP_COLPTR (SQL_COPT_TDSODBC_IMPL_BASE+2)
178 #define SQL_COPT_TDSODBC_IMPL_BCP_SENDROW (SQL_COPT_TDSODBC_IMPL_BASE+3)
179 #define SQL_COPT_TDSODBC_IMPL_BCP_BATCH (SQL_COPT_TDSODBC_IMPL_BASE+4)
180 #define SQL_COPT_TDSODBC_IMPL_BCP_DONE (SQL_COPT_TDSODBC_IMPL_BASE+5)
181 #define SQL_COPT_TDSODBC_IMPL_BCP_BIND (SQL_COPT_TDSODBC_IMPL_BASE+6)
182 #define SQL_COPT_TDSODBC_IMPL_BCP_INITW (SQL_COPT_TDSODBC_IMPL_BASE+7)
184 #define SQL_VARLEN_DATA -10
190 BCP_TYPE_SQLCHAR = 47,
191 #define BCP_TYPE_SQLCHAR BCP_TYPE_SQLCHAR
192 BCP_TYPE_SQLVARCHAR = 39,
193 #define BCP_TYPE_SQLVARCHAR BCP_TYPE_SQLVARCHAR
194 BCP_TYPE_SQLINTN = 38,
195 #define BCP_TYPE_SQLINTN BCP_TYPE_SQLINTN
196 BCP_TYPE_SQLINT1 = 48,
197 #define BCP_TYPE_SQLINT1 BCP_TYPE_SQLINT1
198 BCP_TYPE_SQLINT2 = 52,
199 #define BCP_TYPE_SQLINT2 BCP_TYPE_SQLINT2
200 BCP_TYPE_SQLINT4 = 56,
201 #define BCP_TYPE_SQLINT4 BCP_TYPE_SQLINT4
202 BCP_TYPE_SQLINT8 = 127,
203 #define BCP_TYPE_SQLINT8 BCP_TYPE_SQLINT8
204 BCP_TYPE_SQLFLT8 = 62,
205 #define BCP_TYPE_SQLFLT8 BCP_TYPE_SQLFLT8
206 BCP_TYPE_SQLDATETIME = 61,
207 #define BCP_TYPE_SQLDATETIME BCP_TYPE_SQLDATETIME
208 BCP_TYPE_SQLBIT = 50,
209 #define BCP_TYPE_SQLBIT BCP_TYPE_SQLBIT
210 BCP_TYPE_SQLBITN = 104,
211 #define BCP_TYPE_SQLBITN BCP_TYPE_SQLBITN
212 BCP_TYPE_SQLTEXT = 35,
213 #define BCP_TYPE_SQLTEXT BCP_TYPE_SQLTEXT
214 BCP_TYPE_SQLNTEXT = 99,
215 #define BCP_TYPE_SQLNTEXT BCP_TYPE_SQLNTEXT
216 BCP_TYPE_SQLIMAGE = 34,
217 #define BCP_TYPE_SQLIMAGE BCP_TYPE_SQLIMAGE
218 BCP_TYPE_SQLMONEY4 = 122,
219 #define BCP_TYPE_SQLMONEY4 BCP_TYPE_SQLMONEY4
220 BCP_TYPE_SQLMONEY = 60,
221 #define BCP_TYPE_SQLMONEY BCP_TYPE_SQLMONEY
222 BCP_TYPE_SQLDATETIME4 = 58,
223 #define BCP_TYPE_SQLDATETIME4 BCP_TYPE_SQLDATETIME4
224 BCP_TYPE_SQLREAL = 59,
225 BCP_TYPE_SQLFLT4 = 59,
226 #define BCP_TYPE_SQLREAL BCP_TYPE_SQLREAL
227 #define BCP_TYPE_SQLFLT4 BCP_TYPE_SQLFLT4
228 BCP_TYPE_SQLBINARY = 45,
229 #define BCP_TYPE_SQLBINARY BCP_TYPE_SQLBINARY
230 BCP_TYPE_SQLVOID = 31,
231 #define BCP_TYPE_SQLVOID BCP_TYPE_SQLVOID
232 BCP_TYPE_SQLVARBINARY = 37,
233 #define BCP_TYPE_SQLVARBINARY BCP_TYPE_SQLVARBINARY
234 BCP_TYPE_SQLNUMERIC = 108,
235 #define BCP_TYPE_SQLNUMERIC BCP_TYPE_SQLNUMERIC
236 BCP_TYPE_SQLDECIMAL = 106,
237 #define BCP_TYPE_SQLDECIMAL BCP_TYPE_SQLDECIMAL
238 BCP_TYPE_SQLFLTN = 109,
239 #define BCP_TYPE_SQLFLTN BCP_TYPE_SQLFLTN
240 BCP_TYPE_SQLMONEYN = 110,
241 #define BCP_TYPE_SQLMONEYN BCP_TYPE_SQLMONEYN
242 BCP_TYPE_SQLDATETIMN = 111,
243 #define BCP_TYPE_SQLDATETIMN BCP_TYPE_SQLDATETIMN
244 BCP_TYPE_SQLNVARCHAR = 103,
245 #define BCP_TYPE_SQLNVARCHAR BCP_TYPE_SQLNVARCHAR
246 BCP_TYPE_SQLUNIQUEID = 36,
247 #define BCP_TYPE_SQLUNIQUEID BCP_TYPE_SQLUNIQUEID
248 BCP_TYPE_SQLDATETIME2 = 42,
249 #define BCP_TYPE_SQLDATETIME2 BCP_TYPE_SQLDATETIME2
259 #define TDSODBC_INLINE __inline
261 #define TDSODBC_INLINE __inline__
264 struct tdsodbc_impl_bcp_init_params
272 static TDSODBC_INLINE RETCODE SQL_API
273 bcp_initA(HDBC hdbc,
const char *tblname,
const char *hfile,
const char *errfile,
int direction)
275 struct tdsodbc_impl_bcp_init_params params = {tblname, hfile, errfile, direction};
276 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_INITA, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;
279 static TDSODBC_INLINE RETCODE SQL_API
280 bcp_initW(HDBC hdbc,
const SQLWCHAR *tblname,
const SQLWCHAR *hfile,
const SQLWCHAR *errfile,
int direction)
282 struct tdsodbc_impl_bcp_init_params params = {tblname, hfile, errfile, direction};
283 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_INITW, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;
286 struct tdsodbc_impl_bcp_control_params
292 static TDSODBC_INLINE RETCODE SQL_API
295 struct tdsodbc_impl_bcp_control_params params = {field, value};
296 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_CONTROL, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;
299 struct tdsodbc_impl_bcp_colptr_params
301 const unsigned char * colptr;
305 static TDSODBC_INLINE RETCODE SQL_API
306 bcp_colptr(HDBC hdbc,
const unsigned char * colptr,
int table_column)
308 struct tdsodbc_impl_bcp_colptr_params params = {colptr, table_column};
309 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_COLPTR, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;
312 static TDSODBC_INLINE RETCODE SQL_API
315 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_SENDROW, NULL, SQL_IS_POINTER)) ? SUCCEED : FAIL;
318 struct tdsodbc_impl_bcp_batch_params
323 static TDSODBC_INLINE
int SQL_API
326 struct tdsodbc_impl_bcp_batch_params params = {-1};
327 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_BATCH, ¶ms, SQL_IS_POINTER)) ? params.rows : -1;
330 struct tdsodbc_impl_bcp_done_params
335 static TDSODBC_INLINE
int SQL_API
338 struct tdsodbc_impl_bcp_done_params params = {-1};
339 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_DONE, ¶ms, SQL_IS_POINTER)) ? params.rows : -1;
342 struct tdsodbc_impl_bcp_bind_params
344 const unsigned char * varaddr;
347 const unsigned char * terminator;
353 static TDSODBC_INLINE RETCODE SQL_API
354 bcp_bind(HDBC hdbc,
const unsigned char * varaddr,
int prefixlen,
int varlen,
355 const unsigned char * terminator,
int termlen,
int vartype,
int table_column)
357 struct tdsodbc_impl_bcp_bind_params params = {varaddr, prefixlen, varlen, terminator, termlen, vartype, table_column};
358 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_BIND, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;
362 #define bcp_init bcp_initW
364 #define bcp_init bcp_initA