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_MARS_ENABLED 
   48#define SQL_COPT_SS_MARS_ENABLED    (SQL_COPT_SS_BASE+24) 
   51#ifndef SQL_COPT_SS_OLDPWD 
   52#define SQL_COPT_SS_OLDPWD  (SQL_COPT_SS_BASE+26) 
   55#define SQL_INFO_FREETDS_TDS_VERSION    1300 
   56#define SQL_INFO_FREETDS_SOCKET 1301 
   58#ifndef SQL_MARS_ENABLED_NO 
   59#define SQL_MARS_ENABLED_NO 0 
   62#ifndef SQL_MARS_ENABLED_YES 
   63#define SQL_MARS_ENABLED_YES    1 
   67#define SQL_SS_VARIANT  (-150) 
   71#define SQL_SS_UDT  (-151) 
   75#define SQL_SS_XML  (-152) 
   79#define SQL_SS_TABLE    (-153) 
   83#define SQL_SS_TIME2    (-154) 
   86#ifndef SQL_SS_TIMESTAMPOFFSET 
   87#define SQL_SS_TIMESTAMPOFFSET  (-155) 
   94#define SQL_C_SS_TIME2  (0x4000) 
   97#ifndef SQL_C_SS_TIMESTAMPOFFSET 
   98#define SQL_C_SS_TIMESTAMPOFFSET    (0x4001) 
  101#ifndef SQL_CA_SS_BASE 
  102#define SQL_CA_SS_BASE 1200 
  105#ifndef SQL_CA_SS_UDT_CATALOG_NAME 
  106#define SQL_CA_SS_UDT_CATALOG_NAME  (SQL_CA_SS_BASE+18) 
  109#ifndef SQL_CA_SS_UDT_SCHEMA_NAME 
  110#define SQL_CA_SS_UDT_SCHEMA_NAME   (SQL_CA_SS_BASE+19) 
  113#ifndef SQL_CA_SS_UDT_TYPE_NAME 
  114#define SQL_CA_SS_UDT_TYPE_NAME (SQL_CA_SS_BASE+20) 
  117#ifndef SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME 
  118#define SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME    (SQL_CA_SS_BASE+21) 
  121#ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME 
  122#define SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME (SQL_CA_SS_BASE+22) 
  125#ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME 
  126#define SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME  (SQL_CA_SS_BASE+23) 
  129#ifndef SQL_CA_SS_XML_SCHEMACOLLECTION_NAME 
  130#define SQL_CA_SS_XML_SCHEMACOLLECTION_NAME (SQL_CA_SS_BASE+24) 
  137    SQLUINTEGER fraction;
 
 
  147    SQLUINTEGER fraction;
 
  148    SQLSMALLINT timezone_hour;
 
  149    SQLSMALLINT timezone_minute;
 
 
  162#ifndef BCPKEEPIDENTITY 
  163#define BCPKEEPIDENTITY 8 
  169#define BCP_DIRECTION_IN 1 
  171#define SQL_COPT_SS_BCP (SQL_COPT_SS_BASE+19) 
  175#define SQL_COPT_TDSODBC_IMPL_BASE  1500 
  176#define SQL_COPT_TDSODBC_IMPL_BCP_INITA (SQL_COPT_TDSODBC_IMPL_BASE) 
  177#define SQL_COPT_TDSODBC_IMPL_BCP_CONTROL   (SQL_COPT_TDSODBC_IMPL_BASE+1) 
  178#define SQL_COPT_TDSODBC_IMPL_BCP_COLPTR    (SQL_COPT_TDSODBC_IMPL_BASE+2) 
  179#define SQL_COPT_TDSODBC_IMPL_BCP_SENDROW   (SQL_COPT_TDSODBC_IMPL_BASE+3) 
  180#define SQL_COPT_TDSODBC_IMPL_BCP_BATCH (SQL_COPT_TDSODBC_IMPL_BASE+4) 
  181#define SQL_COPT_TDSODBC_IMPL_BCP_DONE  (SQL_COPT_TDSODBC_IMPL_BASE+5) 
  182#define SQL_COPT_TDSODBC_IMPL_BCP_BIND  (SQL_COPT_TDSODBC_IMPL_BASE+6) 
  183#define SQL_COPT_TDSODBC_IMPL_BCP_INITW (SQL_COPT_TDSODBC_IMPL_BASE+7) 
  185#define SQL_VARLEN_DATA -10 
  191    BCP_TYPE_SQLCHAR = 47,      
 
  192#define BCP_TYPE_SQLCHAR    BCP_TYPE_SQLCHAR 
  193    BCP_TYPE_SQLVARCHAR = 39,   
 
  194#define BCP_TYPE_SQLVARCHAR BCP_TYPE_SQLVARCHAR 
  195    BCP_TYPE_SQLINTN = 38,      
 
  196#define BCP_TYPE_SQLINTN    BCP_TYPE_SQLINTN 
  197    BCP_TYPE_SQLINT1 = 48,      
 
  198#define BCP_TYPE_SQLINT1    BCP_TYPE_SQLINT1 
  199    BCP_TYPE_SQLINT2 = 52,      
 
  200#define BCP_TYPE_SQLINT2    BCP_TYPE_SQLINT2 
  201    BCP_TYPE_SQLINT4 = 56,      
 
  202#define BCP_TYPE_SQLINT4    BCP_TYPE_SQLINT4 
  203    BCP_TYPE_SQLINT8 = 127,     
 
  204#define BCP_TYPE_SQLINT8    BCP_TYPE_SQLINT8 
  205    BCP_TYPE_SQLFLT8 = 62,      
 
  206#define BCP_TYPE_SQLFLT8    BCP_TYPE_SQLFLT8 
  207    BCP_TYPE_SQLDATETIME = 61,  
 
  208#define BCP_TYPE_SQLDATETIME    BCP_TYPE_SQLDATETIME 
  209    BCP_TYPE_SQLBIT = 50,       
 
  210#define BCP_TYPE_SQLBIT BCP_TYPE_SQLBIT 
  211    BCP_TYPE_SQLBITN = 104,     
 
  212#define BCP_TYPE_SQLBITN    BCP_TYPE_SQLBITN 
  213    BCP_TYPE_SQLTEXT = 35,      
 
  214#define BCP_TYPE_SQLTEXT    BCP_TYPE_SQLTEXT 
  215    BCP_TYPE_SQLNTEXT = 99,     
 
  216#define BCP_TYPE_SQLNTEXT   BCP_TYPE_SQLNTEXT 
  217    BCP_TYPE_SQLIMAGE = 34,     
 
  218#define BCP_TYPE_SQLIMAGE   BCP_TYPE_SQLIMAGE 
  219    BCP_TYPE_SQLMONEY4 = 122,   
 
  220#define BCP_TYPE_SQLMONEY4  BCP_TYPE_SQLMONEY4 
  221    BCP_TYPE_SQLMONEY = 60,     
 
  222#define BCP_TYPE_SQLMONEY   BCP_TYPE_SQLMONEY 
  223    BCP_TYPE_SQLDATETIME4 = 58, 
 
  224#define BCP_TYPE_SQLDATETIME4   BCP_TYPE_SQLDATETIME4 
  225    BCP_TYPE_SQLREAL = 59,      
 
  226    BCP_TYPE_SQLFLT4 = 59,      
 
  227#define BCP_TYPE_SQLREAL    BCP_TYPE_SQLREAL 
  228#define BCP_TYPE_SQLFLT4    BCP_TYPE_SQLFLT4 
  229    BCP_TYPE_SQLBINARY = 45,        
 
  230#define BCP_TYPE_SQLBINARY  BCP_TYPE_SQLBINARY 
  231    BCP_TYPE_SQLVOID = 31,      
 
  232#define BCP_TYPE_SQLVOID    BCP_TYPE_SQLVOID 
  233    BCP_TYPE_SQLVARBINARY = 37, 
 
  234#define BCP_TYPE_SQLVARBINARY   BCP_TYPE_SQLVARBINARY 
  235    BCP_TYPE_SQLNUMERIC = 108,  
 
  236#define BCP_TYPE_SQLNUMERIC BCP_TYPE_SQLNUMERIC 
  237    BCP_TYPE_SQLDECIMAL = 106,  
 
  238#define BCP_TYPE_SQLDECIMAL BCP_TYPE_SQLDECIMAL 
  239    BCP_TYPE_SQLFLTN = 109,     
 
  240#define BCP_TYPE_SQLFLTN    BCP_TYPE_SQLFLTN 
  241    BCP_TYPE_SQLMONEYN = 110,   
 
  242#define BCP_TYPE_SQLMONEYN  BCP_TYPE_SQLMONEYN 
  243    BCP_TYPE_SQLDATETIMN = 111, 
 
  244#define BCP_TYPE_SQLDATETIMN    BCP_TYPE_SQLDATETIMN 
  245    BCP_TYPE_SQLNVARCHAR = 103, 
 
  246#define BCP_TYPE_SQLNVARCHAR    BCP_TYPE_SQLNVARCHAR 
  247    BCP_TYPE_SQLUNIQUEID = 36,  
 
  248#define BCP_TYPE_SQLUNIQUEID    BCP_TYPE_SQLUNIQUEID 
  249    BCP_TYPE_SQLDATETIME2 = 42,    
 
  250#define BCP_TYPE_SQLDATETIME2   BCP_TYPE_SQLDATETIME2 
  260#define TDSODBC_INLINE __inline 
  262#define TDSODBC_INLINE __inline__ 
  265struct tdsodbc_impl_bcp_init_params
 
  273static TDSODBC_INLINE RETCODE SQL_API
 
  274bcp_initA(HDBC hdbc, 
const char *tblname, 
const char *hfile, 
const char *errfile, 
int direction)
 
  276    struct tdsodbc_impl_bcp_init_params params = {tblname, hfile, errfile, direction};
 
  277    return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_INITA, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;
 
  280static TDSODBC_INLINE RETCODE SQL_API
 
  281bcp_initW(HDBC hdbc, 
const SQLWCHAR *tblname, 
const SQLWCHAR *hfile, 
const SQLWCHAR *errfile, 
int direction)
 
  283    struct tdsodbc_impl_bcp_init_params params = {tblname, hfile, errfile, direction};
 
  284    return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_INITW, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;
 
  287struct tdsodbc_impl_bcp_control_params
 
  293static TDSODBC_INLINE RETCODE SQL_API
 
  296    struct tdsodbc_impl_bcp_control_params params = {field, value};
 
  297    return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_CONTROL, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;
 
  300struct tdsodbc_impl_bcp_colptr_params
 
  302    const unsigned char * colptr;
 
  306static TDSODBC_INLINE RETCODE SQL_API
 
  307bcp_colptr(HDBC hdbc, 
const unsigned char * colptr, 
int table_column)
 
  309    struct tdsodbc_impl_bcp_colptr_params params = {colptr, table_column};
 
  310    return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_COLPTR, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;
 
  313static TDSODBC_INLINE RETCODE SQL_API
 
  316    return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_SENDROW, NULL, SQL_IS_POINTER)) ? SUCCEED : FAIL;
 
  319struct tdsodbc_impl_bcp_batch_params
 
  324static TDSODBC_INLINE 
int SQL_API
 
  327    struct tdsodbc_impl_bcp_batch_params params = {-1};
 
  328    return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_BATCH, ¶ms, SQL_IS_POINTER)) ? params.rows : -1;
 
  331struct tdsodbc_impl_bcp_done_params
 
  336static TDSODBC_INLINE 
int SQL_API
 
  339    struct tdsodbc_impl_bcp_done_params params = {-1};
 
  340    return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_DONE, ¶ms, SQL_IS_POINTER)) ? params.rows : -1;
 
  343struct tdsodbc_impl_bcp_bind_params
 
  345    const unsigned char * varaddr;
 
  348    const unsigned char * terminator;
 
  354static TDSODBC_INLINE RETCODE SQL_API
 
  355bcp_bind(HDBC hdbc, 
const unsigned char * varaddr, 
int prefixlen, 
int varlen,
 
  356    const unsigned char * terminator, 
int termlen, 
int vartype, 
int table_column)
 
  358    struct tdsodbc_impl_bcp_bind_params params = {varaddr, prefixlen, varlen, terminator, termlen, vartype, table_column};
 
  359    return SQL_SUCCEEDED(SQLSetConnectAttr(hdbc, SQL_COPT_TDSODBC_IMPL_BCP_BIND, ¶ms, SQL_IS_POINTER)) ? SUCCEED : FAIL;
 
  363#define bcp_init bcp_initW 
  365#define bcp_init bcp_initA 
RETCODE bcp_control(DBPROCESS *dbproc, int field, DBINT value)
Set BCP options for uploading a datafile.
Definition bcp.c:544
RETCODE bcp_colptr(DBPROCESS *dbproc, BYTE *colptr, int table_column)
Override bcp_bind() by pointing to a different host variable.
Definition bcp.c:671
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:1381