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 70 #ifndef SQL_SS_VARIANT 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) 97 #ifndef SQL_C_SS_TIME2 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) 179 #define SQL_BCP_OFF 0 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 267 #if defined(__cplusplus) || (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) 268 #define TDSODBC_INLINE inline 269 #elif defined(_MSC_VER) 270 #define TDSODBC_INLINE __inline 272 #define TDSODBC_INLINE __inline__ 275 struct tdsodbc_impl_bcp_init_params
283 static TDSODBC_INLINE RETCODE SQL_API
284 bcp_initA(HDBC hdbc,
const char *tblname,
const char *hfile,
const char *errfile,
int direction)
286 struct tdsodbc_impl_bcp_init_params params = {tblname, hfile, errfile, direction};
287 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_INITA, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;
290 static TDSODBC_INLINE RETCODE SQL_API
291 bcp_initW(HDBC hdbc,
const SQLWCHAR *tblname,
const SQLWCHAR *hfile,
const SQLWCHAR *errfile,
int direction)
293 struct tdsodbc_impl_bcp_init_params params = {tblname, hfile, errfile, direction};
294 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_INITW, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;
297 struct tdsodbc_impl_bcp_control_params
303 static TDSODBC_INLINE RETCODE SQL_API
306 struct tdsodbc_impl_bcp_control_params params = {field, value};
307 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_CONTROL, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;
310 struct tdsodbc_impl_bcp_colptr_params
312 const unsigned char * colptr;
316 static TDSODBC_INLINE RETCODE SQL_API
317 bcp_colptr(HDBC hdbc,
const unsigned char * colptr,
int table_column)
319 struct tdsodbc_impl_bcp_colptr_params params = {colptr, table_column};
320 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_COLPTR, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;
323 static TDSODBC_INLINE RETCODE SQL_API
326 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_SENDROW, NULL, SQL_IS_POINTER)) ? SUCCEED : FAIL;
329 struct tdsodbc_impl_bcp_batch_params
334 static TDSODBC_INLINE
int SQL_API
337 struct tdsodbc_impl_bcp_batch_params params = {-1};
338 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_BATCH, ¶ms, SQL_IS_POINTER)) ? params.rows : -1;
341 struct tdsodbc_impl_bcp_done_params
346 static TDSODBC_INLINE
int SQL_API
349 struct tdsodbc_impl_bcp_done_params params = {-1};
350 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_DONE, ¶ms, SQL_IS_POINTER)) ? params.rows : -1;
353 struct tdsodbc_impl_bcp_bind_params
355 const unsigned char * varaddr;
358 const unsigned char * terminator;
364 static TDSODBC_INLINE RETCODE SQL_API
365 bcp_bind(HDBC hdbc,
const unsigned char * varaddr,
int prefixlen,
int varlen,
366 const unsigned char * terminator,
int termlen,
int vartype,
int table_column)
368 struct tdsodbc_impl_bcp_bind_params params = {varaddr, prefixlen, varlen, terminator, termlen, vartype, table_column};
369 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_BIND, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;
373 #define bcp_init bcp_initW 374 #define BCPHINTS BCPHINTSW 376 #define bcp_init bcp_initA 377 #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_sendrow(DBPROCESS *dbproc)
Write data in host variables to the table.
Definition: bcp.c:1382
DBINT bcp_done(DBPROCESS *dbproc)
Conclude the transfer of data from program variables.
Definition: bcp.c:2039
DBINT bcp_batch(DBPROCESS *dbproc)
Commit a set of rows to the table.
Definition: bcp.c:2012
RETCODE bcp_colptr(DBPROCESS *dbproc, BYTE *colptr, int table_column)
Override bcp_bind() by pointing to a different host variable.
Definition: bcp.c:672
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:2081