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_OLDPWD
43 #define SQL_COPT_SS_OLDPWD 1226
46 #define SQL_COPT_SS_BASE 1200
57 #ifndef BCPKEEPIDENTITY
58 #define BCPKEEPIDENTITY 8
64 #define BCP_DIRECTION_IN 1
66 #define SQL_COPT_SS_BCP (SQL_COPT_SS_BASE+19)
70 #define SQL_COPT_TDSODBC_IMPL_BASE 1500
71 #define SQL_COPT_TDSODBC_IMPL_BCP_INITA (SQL_COPT_TDSODBC_IMPL_BASE)
72 #define SQL_COPT_TDSODBC_IMPL_BCP_CONTROL (SQL_COPT_TDSODBC_IMPL_BASE+1)
73 #define SQL_COPT_TDSODBC_IMPL_BCP_COLPTR (SQL_COPT_TDSODBC_IMPL_BASE+2)
74 #define SQL_COPT_TDSODBC_IMPL_BCP_SENDROW (SQL_COPT_TDSODBC_IMPL_BASE+3)
75 #define SQL_COPT_TDSODBC_IMPL_BCP_BATCH (SQL_COPT_TDSODBC_IMPL_BASE+4)
76 #define SQL_COPT_TDSODBC_IMPL_BCP_DONE (SQL_COPT_TDSODBC_IMPL_BASE+5)
77 #define SQL_COPT_TDSODBC_IMPL_BCP_BIND (SQL_COPT_TDSODBC_IMPL_BASE+6)
78 #define SQL_COPT_TDSODBC_IMPL_BCP_INITW (SQL_COPT_TDSODBC_IMPL_BASE+7)
80 #define SQL_VARLEN_DATA -10
86 BCP_TYPE_SQLCHAR = 47,
87 #define BCP_TYPE_SQLCHAR BCP_TYPE_SQLCHAR
88 BCP_TYPE_SQLVARCHAR = 39,
89 #define BCP_TYPE_SQLVARCHAR BCP_TYPE_SQLVARCHAR
90 BCP_TYPE_SQLINTN = 38,
91 #define BCP_TYPE_SQLINTN BCP_TYPE_SQLINTN
92 BCP_TYPE_SQLINT1 = 48,
93 #define BCP_TYPE_SQLINT1 BCP_TYPE_SQLINT1
94 BCP_TYPE_SQLINT2 = 52,
95 #define BCP_TYPE_SQLINT2 BCP_TYPE_SQLINT2
96 BCP_TYPE_SQLINT4 = 56,
97 #define BCP_TYPE_SQLINT4 BCP_TYPE_SQLINT4
98 BCP_TYPE_SQLINT8 = 127,
99 #define BCP_TYPE_SQLINT8 BCP_TYPE_SQLINT8
100 BCP_TYPE_SQLFLT8 = 62,
101 #define BCP_TYPE_SQLFLT8 BCP_TYPE_SQLFLT8
102 BCP_TYPE_SQLDATETIME = 61,
103 #define BCP_TYPE_SQLDATETIME BCP_TYPE_SQLDATETIME
104 BCP_TYPE_SQLBIT = 50,
105 #define BCP_TYPE_SQLBIT BCP_TYPE_SQLBIT
106 BCP_TYPE_SQLBITN = 104,
107 #define BCP_TYPE_SQLBITN BCP_TYPE_SQLBITN
108 BCP_TYPE_SQLTEXT = 35,
109 #define BCP_TYPE_SQLTEXT BCP_TYPE_SQLTEXT
110 BCP_TYPE_SQLNTEXT = 99,
111 #define BCP_TYPE_SQLNTEXT BCP_TYPE_SQLNTEXT
112 BCP_TYPE_SQLIMAGE = 34,
113 #define BCP_TYPE_SQLIMAGE BCP_TYPE_SQLIMAGE
114 BCP_TYPE_SQLMONEY4 = 122,
115 #define BCP_TYPE_SQLMONEY4 BCP_TYPE_SQLMONEY4
116 BCP_TYPE_SQLMONEY = 60,
117 #define BCP_TYPE_SQLMONEY BCP_TYPE_SQLMONEY
118 BCP_TYPE_SQLDATETIME4 = 58,
119 #define BCP_TYPE_SQLDATETIME4 BCP_TYPE_SQLDATETIME4
120 BCP_TYPE_SQLREAL = 59,
121 BCP_TYPE_SQLFLT4 = 59,
122 #define BCP_TYPE_SQLREAL BCP_TYPE_SQLREAL
123 #define BCP_TYPE_SQLFLT4 BCP_TYPE_SQLFLT4
124 BCP_TYPE_SQLBINARY = 45,
125 #define BCP_TYPE_SQLBINARY BCP_TYPE_SQLBINARY
126 BCP_TYPE_SQLVOID = 31,
127 #define BCP_TYPE_SQLVOID BCP_TYPE_SQLVOID
128 BCP_TYPE_SQLVARBINARY = 37,
129 #define BCP_TYPE_SQLVARBINARY BCP_TYPE_SQLVARBINARY
130 BCP_TYPE_SQLNUMERIC = 108,
131 #define BCP_TYPE_SQLNUMERIC BCP_TYPE_SQLNUMERIC
132 BCP_TYPE_SQLDECIMAL = 106,
133 #define BCP_TYPE_SQLDECIMAL BCP_TYPE_SQLDECIMAL
134 BCP_TYPE_SQLFLTN = 109,
135 #define BCP_TYPE_SQLFLTN BCP_TYPE_SQLFLTN
136 BCP_TYPE_SQLMONEYN = 110,
137 #define BCP_TYPE_SQLMONEYN BCP_TYPE_SQLMONEYN
138 BCP_TYPE_SQLDATETIMN = 111,
139 #define BCP_TYPE_SQLDATETIMN BCP_TYPE_SQLDATETIMN
140 BCP_TYPE_SQLNVARCHAR = 103,
141 #define BCP_TYPE_SQLNVARCHAR BCP_TYPE_SQLNVARCHAR
142 BCP_TYPE_SQLUNIQUEID = 36,
143 #define BCP_TYPE_SQLUNIQUEID BCP_TYPE_SQLUNIQUEID
144 BCP_TYPE_SQLDATETIME2 = 42,
145 #define BCP_TYPE_SQLDATETIME2 BCP_TYPE_SQLDATETIME2
155 #define TDSODBC_INLINE __inline
157 #define TDSODBC_INLINE __inline__
160 struct tdsodbc_impl_bcp_init_params
168 static TDSODBC_INLINE RETCODE SQL_API
169 bcp_initA(HDBC hdbc,
const char *tblname,
const char *hfile,
const char *errfile,
int direction)
171 struct tdsodbc_impl_bcp_init_params params = {tblname, hfile, errfile, direction};
172 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_INITA, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;
175 static TDSODBC_INLINE RETCODE SQL_API
176 bcp_initW(HDBC hdbc,
const SQLWCHAR *tblname,
const SQLWCHAR *hfile,
const SQLWCHAR *errfile,
int direction)
178 struct tdsodbc_impl_bcp_init_params params = {tblname, hfile, errfile, direction};
179 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_INITW, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;
182 struct tdsodbc_impl_bcp_control_params
188 static TDSODBC_INLINE RETCODE SQL_API
191 struct tdsodbc_impl_bcp_control_params params = {field, value};
192 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_CONTROL, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;
195 struct tdsodbc_impl_bcp_colptr_params
201 static TDSODBC_INLINE RETCODE SQL_API
202 bcp_colptr(HDBC hdbc,
const BYTE * colptr,
int table_column)
204 struct tdsodbc_impl_bcp_colptr_params params = {colptr, table_column};
205 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_COLPTR, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;
208 static TDSODBC_INLINE RETCODE SQL_API
211 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_SENDROW, NULL, SQL_IS_POINTER)) ? SUCCEED : FAIL;
214 struct tdsodbc_impl_bcp_batch_params
219 static TDSODBC_INLINE
int SQL_API
222 struct tdsodbc_impl_bcp_batch_params params = {-1};
223 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_BATCH, ¶ms, SQL_IS_POINTER)) ? params.rows : -1;
226 struct tdsodbc_impl_bcp_done_params
231 static TDSODBC_INLINE
int SQL_API
234 struct tdsodbc_impl_bcp_done_params params = {-1};
235 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_DONE, ¶ms, SQL_IS_POINTER)) ? params.rows : -1;
238 struct tdsodbc_impl_bcp_bind_params
240 const BYTE * varaddr;
243 const BYTE * terminator;
249 static TDSODBC_INLINE RETCODE SQL_API
250 bcp_bind(HDBC hdbc,
const BYTE * varaddr,
int prefixlen,
int varlen,
251 const BYTE * terminator,
int termlen,
int vartype,
int table_column)
253 struct tdsodbc_impl_bcp_bind_params params = {varaddr, prefixlen, varlen, terminator, termlen, vartype, table_column};
254 return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_BIND, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;
258 #define bcp_init bcp_initW
260 #define bcp_init bcp_initA
RETCODE bcp_sendrow(DBPROCESS *dbproc)
Write data in host variables to the table.
Definition: bcp.c:1327
RETCODE bcp_control(DBPROCESS *dbproc, int field, DBINT value)
Set BCP options for uploading a datafile.
Definition: bcp.c:536
DBINT bcp_done(DBPROCESS *dbproc)
Conclude the transfer of data from program variables.
Definition: bcp.c:1967
RETCODE bcp_colptr(DBPROCESS *dbproc, BYTE *colptr, int table_column)
Override bcp_bind() by pointing to a different host variable.
Definition: bcp.c:658
RETCODE bcp_bind(DBPROCESS *dbproc, BYTE *varaddr, int prefixlen, DBINT varlen, BYTE *terminator, int termlen, int vartype, int table_column)
Bind a program host variable to a database column.
Definition: bcp.c:2009
DBINT bcp_batch(DBPROCESS *dbproc)
Commit a set of rows to the table.
Definition: bcp.c:1940