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
37#define SQL_SOPT_SS_PARAM_FOCUS 1236
39#ifndef SQL_SS_LENGTH_UNLIMITED
40#define SQL_SS_LENGTH_UNLIMITED 0
43#ifndef SQL_COPT_SS_BASE
44#define SQL_COPT_SS_BASE 1200
47#ifndef SQL_COPT_SS_ATTACHDBFILENAME
48#define SQL_COPT_SS_ATTACHDBFILENAME (SQL_COPT_SS_BASE+21)
51#ifndef SQL_COPT_SS_MARS_ENABLED
52#define SQL_COPT_SS_MARS_ENABLED (SQL_COPT_SS_BASE+24)
55#ifndef SQL_COPT_SS_OLDPWD
56#define SQL_COPT_SS_OLDPWD (SQL_COPT_SS_BASE+26)
59#define SQL_INFO_FREETDS_TDS_VERSION 1300
60#define SQL_INFO_FREETDS_SOCKET 1301
62#ifndef SQL_MARS_ENABLED_NO
63#define SQL_MARS_ENABLED_NO 0
66#ifndef SQL_MARS_ENABLED_YES
67#define SQL_MARS_ENABLED_YES 1
71#define SQL_SS_VARIANT (-150)
75#define SQL_SS_UDT (-151)
79#define SQL_SS_XML (-152)
83#define SQL_SS_TABLE (-153)
87#define SQL_SS_TIME2 (-154)
90#ifndef SQL_SS_TIMESTAMPOFFSET
91#define SQL_SS_TIMESTAMPOFFSET (-155)
98#define SQL_C_SS_TIME2 (0x4000)
101#ifndef SQL_C_SS_TIMESTAMPOFFSET
102#define SQL_C_SS_TIMESTAMPOFFSET (0x4001)
105#ifndef SQL_CA_SS_BASE
106#define SQL_CA_SS_BASE 1200
109#ifndef SQL_CA_SS_UDT_CATALOG_NAME
110#define SQL_CA_SS_UDT_CATALOG_NAME (SQL_CA_SS_BASE+18)
113#ifndef SQL_CA_SS_UDT_SCHEMA_NAME
114#define SQL_CA_SS_UDT_SCHEMA_NAME (SQL_CA_SS_BASE+19)
117#ifndef SQL_CA_SS_UDT_TYPE_NAME
118#define SQL_CA_SS_UDT_TYPE_NAME (SQL_CA_SS_BASE+20)
121#ifndef SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME
122#define SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME (SQL_CA_SS_BASE+21)
125#ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME
126#define SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME (SQL_CA_SS_BASE+22)
129#ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME
130#define SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME (SQL_CA_SS_BASE+23)
133#ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_NAME
134#define SQL_CA_SS_XML_SCHEMACOLLECTION_NAME (SQL_CA_SS_BASE+24)
141 SQLUINTEGER fraction;
151 SQLUINTEGER fraction;
152 SQLSMALLINT timezone_hour;
153 SQLSMALLINT timezone_minute;
166#ifndef BCPKEEPIDENTITY
167#define BCPKEEPIDENTITY 8
176#define BCP_DIRECTION_IN 1
178#define SQL_COPT_SS_BCP (SQL_COPT_SS_BASE+19)
182#define SQL_COPT_TDSODBC_IMPL_BASE 1500
183#define SQL_COPT_TDSODBC_IMPL_BCP_INITA (SQL_COPT_TDSODBC_IMPL_BASE)
185#define SQL_COPT_TDSODBC_IMPL_BCP_COLPTR (SQL_COPT_TDSODBC_IMPL_BASE+2)
186#define SQL_COPT_TDSODBC_IMPL_BCP_SENDROW (SQL_COPT_TDSODBC_IMPL_BASE+3)
187#define SQL_COPT_TDSODBC_IMPL_BCP_BATCH (SQL_COPT_TDSODBC_IMPL_BASE+4)
188#define SQL_COPT_TDSODBC_IMPL_BCP_DONE (SQL_COPT_TDSODBC_IMPL_BASE+5)
189#define SQL_COPT_TDSODBC_IMPL_BCP_BIND (SQL_COPT_TDSODBC_IMPL_BASE+6)
190#define SQL_COPT_TDSODBC_IMPL_BCP_INITW (SQL_COPT_TDSODBC_IMPL_BASE+7)
191#define SQL_COPT_TDSODBC_IMPL_BCP_CONTROL (SQL_COPT_TDSODBC_IMPL_BASE+8)
193#define SQL_VARLEN_DATA -10
199 BCP_TYPE_SQLCHAR = 47,
200#define BCP_TYPE_SQLCHAR BCP_TYPE_SQLCHAR
201 BCP_TYPE_SQLVARCHAR = 39,
202#define BCP_TYPE_SQLVARCHAR BCP_TYPE_SQLVARCHAR
203 BCP_TYPE_SQLINTN = 38,
204#define BCP_TYPE_SQLINTN BCP_TYPE_SQLINTN
205 BCP_TYPE_SQLINT1 = 48,
206#define BCP_TYPE_SQLINT1 BCP_TYPE_SQLINT1
207 BCP_TYPE_SQLINT2 = 52,
208#define BCP_TYPE_SQLINT2 BCP_TYPE_SQLINT2
209 BCP_TYPE_SQLINT4 = 56,
210#define BCP_TYPE_SQLINT4 BCP_TYPE_SQLINT4
211 BCP_TYPE_SQLINT8 = 127,
212#define BCP_TYPE_SQLINT8 BCP_TYPE_SQLINT8
213 BCP_TYPE_SQLFLT8 = 62,
214#define BCP_TYPE_SQLFLT8 BCP_TYPE_SQLFLT8
215 BCP_TYPE_SQLDATETIME = 61,
216#define BCP_TYPE_SQLDATETIME BCP_TYPE_SQLDATETIME
217 BCP_TYPE_SQLBIT = 50,
218#define BCP_TYPE_SQLBIT BCP_TYPE_SQLBIT
219 BCP_TYPE_SQLBITN = 104,
220#define BCP_TYPE_SQLBITN BCP_TYPE_SQLBITN
221 BCP_TYPE_SQLTEXT = 35,
222#define BCP_TYPE_SQLTEXT BCP_TYPE_SQLTEXT
223 BCP_TYPE_SQLNTEXT = 99,
224#define BCP_TYPE_SQLNTEXT BCP_TYPE_SQLNTEXT
225 BCP_TYPE_SQLIMAGE = 34,
226#define BCP_TYPE_SQLIMAGE BCP_TYPE_SQLIMAGE
227 BCP_TYPE_SQLMONEY4 = 122,
228#define BCP_TYPE_SQLMONEY4 BCP_TYPE_SQLMONEY4
229 BCP_TYPE_SQLMONEY = 60,
230#define BCP_TYPE_SQLMONEY BCP_TYPE_SQLMONEY
231 BCP_TYPE_SQLDATETIME4 = 58,
232#define BCP_TYPE_SQLDATETIME4 BCP_TYPE_SQLDATETIME4
233 BCP_TYPE_SQLREAL = 59,
234 BCP_TYPE_SQLFLT4 = 59,
235#define BCP_TYPE_SQLREAL BCP_TYPE_SQLREAL
236#define BCP_TYPE_SQLFLT4 BCP_TYPE_SQLFLT4
237 BCP_TYPE_SQLBINARY = 45,
238#define BCP_TYPE_SQLBINARY BCP_TYPE_SQLBINARY
239 BCP_TYPE_SQLVOID = 31,
240#define BCP_TYPE_SQLVOID BCP_TYPE_SQLVOID
241 BCP_TYPE_SQLVARBINARY = 37,
242#define BCP_TYPE_SQLVARBINARY BCP_TYPE_SQLVARBINARY
243 BCP_TYPE_SQLNUMERIC = 108,
244#define BCP_TYPE_SQLNUMERIC BCP_TYPE_SQLNUMERIC
245 BCP_TYPE_SQLDECIMAL = 106,
246#define BCP_TYPE_SQLDECIMAL BCP_TYPE_SQLDECIMAL
247 BCP_TYPE_SQLFLTN = 109,
248#define BCP_TYPE_SQLFLTN BCP_TYPE_SQLFLTN
249 BCP_TYPE_SQLMONEYN = 110,
250#define BCP_TYPE_SQLMONEYN BCP_TYPE_SQLMONEYN
251 BCP_TYPE_SQLDATETIMN = 111,
252#define BCP_TYPE_SQLDATETIMN BCP_TYPE_SQLDATETIMN
253 BCP_TYPE_SQLNVARCHAR = 103,
254#define BCP_TYPE_SQLNVARCHAR BCP_TYPE_SQLNVARCHAR
255 BCP_TYPE_SQLUNIQUEID = 36,
256#define BCP_TYPE_SQLUNIQUEID BCP_TYPE_SQLUNIQUEID
257 BCP_TYPE_SQLDATETIME2 = 42,
258#define BCP_TYPE_SQLDATETIME2 BCP_TYPE_SQLDATETIME2
268#define TDSODBC_INLINE __inline
270#define TDSODBC_INLINE __inline__
273struct tdsodbc_impl_bcp_init_params
281static TDSODBC_INLINE RETCODE SQL_API
282bcp_initA(HDBC hdbc,
const char *tblname,
const char *hfile,
const char *errfile,
int direction)
284 struct tdsodbc_impl_bcp_init_params params = {tblname, hfile, errfile, direction};
285 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_INITA, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;
288static TDSODBC_INLINE RETCODE SQL_API
289bcp_initW(HDBC hdbc,
const SQLWCHAR *tblname,
const SQLWCHAR *hfile,
const SQLWCHAR *errfile,
int direction)
291 struct tdsodbc_impl_bcp_init_params params = {tblname, hfile, errfile, direction};
292 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_INITW, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;
295struct tdsodbc_impl_bcp_control_params
301static TDSODBC_INLINE RETCODE SQL_API
304 struct tdsodbc_impl_bcp_control_params params = {field, value};
305 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_CONTROL, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;
308struct tdsodbc_impl_bcp_colptr_params
310 const unsigned char * colptr;
314static TDSODBC_INLINE RETCODE SQL_API
315bcp_colptr(HDBC hdbc,
const unsigned char * colptr,
int table_column)
317 struct tdsodbc_impl_bcp_colptr_params params = {colptr, table_column};
318 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_COLPTR, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;
321static TDSODBC_INLINE RETCODE SQL_API
324 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_SENDROW, NULL, SQL_IS_POINTER)) ? SUCCEED : FAIL;
327struct tdsodbc_impl_bcp_batch_params
332static TDSODBC_INLINE
int SQL_API
335 struct tdsodbc_impl_bcp_batch_params params = {-1};
336 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_BATCH, ¶ms, SQL_IS_POINTER)) ? params.rows : -1;
339struct tdsodbc_impl_bcp_done_params
344static TDSODBC_INLINE
int SQL_API
347 struct tdsodbc_impl_bcp_done_params params = {-1};
348 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_DONE, ¶ms, SQL_IS_POINTER)) ? params.rows : -1;
351struct tdsodbc_impl_bcp_bind_params
353 const unsigned char * varaddr;
356 const unsigned char * terminator;
362static TDSODBC_INLINE RETCODE SQL_API
363bcp_bind(HDBC hdbc,
const unsigned char * varaddr,
int prefixlen,
int varlen,
364 const unsigned char * terminator,
int termlen,
int vartype,
int table_column)
366 struct tdsodbc_impl_bcp_bind_params params = {varaddr, prefixlen, varlen, terminator, termlen, vartype, table_column};
367 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_BIND, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;
371#define bcp_init bcp_initW
372#define BCPHINTS BCPHINTSW
374#define bcp_init bcp_initA
375#define BCPHINTS BCPHINTSA
RETCODE bcp_control(DBPROCESS *dbproc, int field, DBINT value)
Set BCP options for uploading a datafile.
Definition bcp.c:542
RETCODE bcp_colptr(DBPROCESS *dbproc, BYTE *colptr, int table_column)
Override bcp_bind() by pointing to a different host variable.
Definition bcp.c:670
RETCODE bcp_bind(DBPROCESS *dbproc, BYTE *varaddr, int prefixlen, DBINT varlen, BYTE *terminator, int termlen, int db_vartype, int table_column)
Bind a program host variable to a database column.
Definition bcp.c:2079
DBINT bcp_done(DBPROCESS *dbproc)
Conclude the transfer of data from program variables.
Definition bcp.c:2037
DBINT bcp_batch(DBPROCESS *dbproc)
Commit a set of rows to the table.
Definition bcp.c:2010
RETCODE bcp_sendrow(DBPROCESS *dbproc)
Write data in host variables to the table.
Definition bcp.c:1380