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
56 #ifndef SQL_MARS_ENABLED_NO
57 #define SQL_MARS_ENABLED_NO 0
60 #ifndef SQL_MARS_ENABLED_YES
61 #define SQL_MARS_ENABLED_YES 1
64 #ifndef SQL_SS_VARIANT
65 #define SQL_SS_VARIANT (-150)
69 #define SQL_SS_UDT (-151)
73 #define SQL_SS_XML (-152)
77 #define SQL_SS_TABLE (-153)
81 #define SQL_SS_TIME2 (-154)
84 #ifndef SQL_SS_TIMESTAMPOFFSET
85 #define SQL_SS_TIMESTAMPOFFSET (-155)
91 #ifndef SQL_C_SS_TIME2
92 #define SQL_C_SS_TIME2 (0x4000)
95 #ifndef SQL_C_SS_TIMESTAMPOFFSET
96 #define SQL_C_SS_TIMESTAMPOFFSET (0x4001)
99 #ifndef SQL_CA_SS_BASE
100 #define SQL_CA_SS_BASE 1200
103 #ifndef SQL_CA_SS_UDT_CATALOG_NAME
104 #define SQL_CA_SS_UDT_CATALOG_NAME (SQL_CA_SS_BASE+18)
107 #ifndef SQL_CA_SS_UDT_SCHEMA_NAME
108 #define SQL_CA_SS_UDT_SCHEMA_NAME (SQL_CA_SS_BASE+19)
111 #ifndef SQL_CA_SS_UDT_TYPE_NAME
112 #define SQL_CA_SS_UDT_TYPE_NAME (SQL_CA_SS_BASE+20)
115 #ifndef SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME
116 #define SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME (SQL_CA_SS_BASE+21)
119 #ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME
120 #define SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME (SQL_CA_SS_BASE+22)
123 #ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME
124 #define SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME (SQL_CA_SS_BASE+23)
127 #ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_NAME
128 #define SQL_CA_SS_XML_SCHEMACOLLECTION_NAME (SQL_CA_SS_BASE+24)
135 SQLUINTEGER fraction;
145 SQLUINTEGER fraction;
146 SQLSMALLINT timezone_hour;
147 SQLSMALLINT timezone_minute;
160 #ifndef BCPKEEPIDENTITY
161 #define BCPKEEPIDENTITY 8
167 #define BCP_DIRECTION_IN 1
169 #define SQL_COPT_SS_BCP (SQL_COPT_SS_BASE+19)
170 #define SQL_BCP_OFF 0
173 #define SQL_COPT_TDSODBC_IMPL_BASE 1500
174 #define SQL_COPT_TDSODBC_IMPL_BCP_INITA (SQL_COPT_TDSODBC_IMPL_BASE)
175 #define SQL_COPT_TDSODBC_IMPL_BCP_CONTROL (SQL_COPT_TDSODBC_IMPL_BASE+1)
176 #define SQL_COPT_TDSODBC_IMPL_BCP_COLPTR (SQL_COPT_TDSODBC_IMPL_BASE+2)
177 #define SQL_COPT_TDSODBC_IMPL_BCP_SENDROW (SQL_COPT_TDSODBC_IMPL_BASE+3)
178 #define SQL_COPT_TDSODBC_IMPL_BCP_BATCH (SQL_COPT_TDSODBC_IMPL_BASE+4)
179 #define SQL_COPT_TDSODBC_IMPL_BCP_DONE (SQL_COPT_TDSODBC_IMPL_BASE+5)
180 #define SQL_COPT_TDSODBC_IMPL_BCP_BIND (SQL_COPT_TDSODBC_IMPL_BASE+6)
181 #define SQL_COPT_TDSODBC_IMPL_BCP_INITW (SQL_COPT_TDSODBC_IMPL_BASE+7)
183 #define SQL_VARLEN_DATA -10
189 BCP_TYPE_SQLCHAR = 47,
190 #define BCP_TYPE_SQLCHAR BCP_TYPE_SQLCHAR
191 BCP_TYPE_SQLVARCHAR = 39,
192 #define BCP_TYPE_SQLVARCHAR BCP_TYPE_SQLVARCHAR
193 BCP_TYPE_SQLINTN = 38,
194 #define BCP_TYPE_SQLINTN BCP_TYPE_SQLINTN
195 BCP_TYPE_SQLINT1 = 48,
196 #define BCP_TYPE_SQLINT1 BCP_TYPE_SQLINT1
197 BCP_TYPE_SQLINT2 = 52,
198 #define BCP_TYPE_SQLINT2 BCP_TYPE_SQLINT2
199 BCP_TYPE_SQLINT4 = 56,
200 #define BCP_TYPE_SQLINT4 BCP_TYPE_SQLINT4
201 BCP_TYPE_SQLINT8 = 127,
202 #define BCP_TYPE_SQLINT8 BCP_TYPE_SQLINT8
203 BCP_TYPE_SQLFLT8 = 62,
204 #define BCP_TYPE_SQLFLT8 BCP_TYPE_SQLFLT8
205 BCP_TYPE_SQLDATETIME = 61,
206 #define BCP_TYPE_SQLDATETIME BCP_TYPE_SQLDATETIME
207 BCP_TYPE_SQLBIT = 50,
208 #define BCP_TYPE_SQLBIT BCP_TYPE_SQLBIT
209 BCP_TYPE_SQLBITN = 104,
210 #define BCP_TYPE_SQLBITN BCP_TYPE_SQLBITN
211 BCP_TYPE_SQLTEXT = 35,
212 #define BCP_TYPE_SQLTEXT BCP_TYPE_SQLTEXT
213 BCP_TYPE_SQLNTEXT = 99,
214 #define BCP_TYPE_SQLNTEXT BCP_TYPE_SQLNTEXT
215 BCP_TYPE_SQLIMAGE = 34,
216 #define BCP_TYPE_SQLIMAGE BCP_TYPE_SQLIMAGE
217 BCP_TYPE_SQLMONEY4 = 122,
218 #define BCP_TYPE_SQLMONEY4 BCP_TYPE_SQLMONEY4
219 BCP_TYPE_SQLMONEY = 60,
220 #define BCP_TYPE_SQLMONEY BCP_TYPE_SQLMONEY
221 BCP_TYPE_SQLDATETIME4 = 58,
222 #define BCP_TYPE_SQLDATETIME4 BCP_TYPE_SQLDATETIME4
223 BCP_TYPE_SQLREAL = 59,
224 BCP_TYPE_SQLFLT4 = 59,
225 #define BCP_TYPE_SQLREAL BCP_TYPE_SQLREAL
226 #define BCP_TYPE_SQLFLT4 BCP_TYPE_SQLFLT4
227 BCP_TYPE_SQLBINARY = 45,
228 #define BCP_TYPE_SQLBINARY BCP_TYPE_SQLBINARY
229 BCP_TYPE_SQLVOID = 31,
230 #define BCP_TYPE_SQLVOID BCP_TYPE_SQLVOID
231 BCP_TYPE_SQLVARBINARY = 37,
232 #define BCP_TYPE_SQLVARBINARY BCP_TYPE_SQLVARBINARY
233 BCP_TYPE_SQLNUMERIC = 108,
234 #define BCP_TYPE_SQLNUMERIC BCP_TYPE_SQLNUMERIC
235 BCP_TYPE_SQLDECIMAL = 106,
236 #define BCP_TYPE_SQLDECIMAL BCP_TYPE_SQLDECIMAL
237 BCP_TYPE_SQLFLTN = 109,
238 #define BCP_TYPE_SQLFLTN BCP_TYPE_SQLFLTN
239 BCP_TYPE_SQLMONEYN = 110,
240 #define BCP_TYPE_SQLMONEYN BCP_TYPE_SQLMONEYN
241 BCP_TYPE_SQLDATETIMN = 111,
242 #define BCP_TYPE_SQLDATETIMN BCP_TYPE_SQLDATETIMN
243 BCP_TYPE_SQLNVARCHAR = 103,
244 #define BCP_TYPE_SQLNVARCHAR BCP_TYPE_SQLNVARCHAR
245 BCP_TYPE_SQLUNIQUEID = 36,
246 #define BCP_TYPE_SQLUNIQUEID BCP_TYPE_SQLUNIQUEID
247 BCP_TYPE_SQLDATETIME2 = 42,
248 #define BCP_TYPE_SQLDATETIME2 BCP_TYPE_SQLDATETIME2
258 #define TDSODBC_INLINE __inline
260 #define TDSODBC_INLINE __inline__
263 struct tdsodbc_impl_bcp_init_params
271 static TDSODBC_INLINE RETCODE SQL_API
272 bcp_initA(HDBC hdbc,
const char *tblname,
const char *hfile,
const char *errfile,
int direction)
274 struct tdsodbc_impl_bcp_init_params params = {tblname, hfile, errfile, direction};
275 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_INITA, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;
278 static TDSODBC_INLINE RETCODE SQL_API
279 bcp_initW(HDBC hdbc,
const SQLWCHAR *tblname,
const SQLWCHAR *hfile,
const SQLWCHAR *errfile,
int direction)
281 struct tdsodbc_impl_bcp_init_params params = {tblname, hfile, errfile, direction};
282 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_INITW, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;
285 struct tdsodbc_impl_bcp_control_params
291 static TDSODBC_INLINE RETCODE SQL_API
294 struct tdsodbc_impl_bcp_control_params params = {field, value};
295 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_CONTROL, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;
298 struct tdsodbc_impl_bcp_colptr_params
300 const unsigned char * colptr;
304 static TDSODBC_INLINE RETCODE SQL_API
305 bcp_colptr(HDBC hdbc,
const unsigned char * colptr,
int table_column)
307 struct tdsodbc_impl_bcp_colptr_params params = {colptr, table_column};
308 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_COLPTR, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;
311 static TDSODBC_INLINE RETCODE SQL_API
314 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_SENDROW, NULL, SQL_IS_POINTER)) ? SUCCEED : FAIL;
317 struct tdsodbc_impl_bcp_batch_params
322 static TDSODBC_INLINE
int SQL_API
325 struct tdsodbc_impl_bcp_batch_params params = {-1};
326 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_BATCH, ¶ms, SQL_IS_POINTER)) ? params.rows : -1;
329 struct tdsodbc_impl_bcp_done_params
334 static TDSODBC_INLINE
int SQL_API
337 struct tdsodbc_impl_bcp_done_params params = {-1};
338 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_DONE, ¶ms, SQL_IS_POINTER)) ? params.rows : -1;
341 struct tdsodbc_impl_bcp_bind_params
343 const unsigned char * varaddr;
346 const unsigned char * terminator;
352 static TDSODBC_INLINE RETCODE SQL_API
353 bcp_bind(HDBC hdbc,
const unsigned char * varaddr,
int prefixlen,
int varlen,
354 const unsigned char * terminator,
int termlen,
int vartype,
int table_column)
356 struct tdsodbc_impl_bcp_bind_params params = {varaddr, prefixlen, varlen, terminator, termlen, vartype, table_column};
357 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_BIND, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;
361 #define bcp_init bcp_initW
363 #define bcp_init bcp_initA
RETCODE bcp_colptr(DBPROCESS *dbproc, BYTE *colptr, int table_column)
Override bcp_bind() by pointing to a different host variable.
Definition: bcp.c:661
RETCODE bcp_control(DBPROCESS *dbproc, int field, DBINT value)
Set BCP options for uploading a datafile.
Definition: bcp.c:539
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:2024
DBINT bcp_done(DBPROCESS *dbproc)
Conclude the transfer of data from program variables.
Definition: bcp.c:1982
DBINT bcp_batch(DBPROCESS *dbproc)
Commit a set of rows to the table.
Definition: bcp.c:1955
RETCODE bcp_sendrow(DBPROCESS *dbproc)
Write data in host variables to the table.
Definition: bcp.c:1335