#ifndef __msodbcsql_h__
#define __msodbcsql_h__
/*
*-----------------------------------------------------------------------------
* File: msodbcsql.h
*
* Copyright: Copyright (c) Microsoft Corporation
*
* Contents: This SDK is not supported under any Microsoft standard support
* program or service. The information is provided AS IS without
* warranty of any kind. Microsoft disclaims all implied
* warranties including, without limitation, any implied
* warranties of merchantability or of fitness for a particular
* purpose. The entire risk arising out of the use of this SDK
* remains with you. In no event shall Microsoft, its authors, or
* anyone else involved in the creation, production, or delivery
* of this SDK be liable for any damages whatsoever (including,
* without limitation, damages for loss of business profits,
* business interruption, loss of business information, or other
* pecuniary loss) arising out of the use of or inability to use
* this SDK, even if Microsoft has been advised of the possibility
* of such damages.
*
*-----------------------------------------------------------------------------
*/
#if !defined(SQLODBC_VER)
#define SQLODBC_VER 1700
#endif
#if SQLODBC_VER >= 1700
#define SQLODBC_PRODUCT_NAME_FULL_VER_ANSI "Microsoft ODBC Driver 17 for SQL Server"
#define SQLODBC_PRODUCT_NAME_FULL_ANSI "Microsoft ODBC Driver for SQL Server"
#define SQLODBC_PRODUCT_NAME_SHORT_VER_ANSI "ODBC Driver 17 for SQL Server"
#define SQLODBC_PRODUCT_NAME_SHORT_ANSI "ODBC Driver for SQL Server"
#endif /* SQLODBC_VER >= 1700 */
#define SQLODBC_PRODUCT_NAME_FULL_VER SQLODBC_PRODUCT_NAME_FULL_VER_ANSI
#define SQLODBC_PRODUCT_NAME_FULL SQLODBC_PRODUCT_NAME_FULL_ANSI
#define SQLODBC_PRODUCT_NAME_SHORT_VER SQLODBC_PRODUCT_NAME_SHORT_VER_ANSI
#define SQLODBC_PRODUCT_NAME_SHORT SQLODBC_PRODUCT_NAME_SHORT_ANSI
#define SQLODBC_DRIVER_NAME SQLODBC_PRODUCT_NAME_SHORT_VER
#ifdef ODBCVER
#ifdef __cplusplus
extern "C" {
#endif
/* max SQL Server identifier length */
#define SQL_MAX_SQLSERVERNAME 128
/*
* SQLSetConnectAttr driver specific defines.
* Microsoft has 1200 thru 1249 reserved for Microsoft ODBC Driver for SQL Server usage.
* Connection attributes
*/
#define SQL_COPT_SS_BASE 1200
#define SQL_COPT_SS_REMOTE_PWD (SQL_COPT_SS_BASE+1) /* dbrpwset SQLSetConnectOption only */
#define SQL_COPT_SS_USE_PROC_FOR_PREP (SQL_COPT_SS_BASE+2) /* Use create proc for SQLPrepare */
#define SQL_COPT_SS_INTEGRATED_SECURITY (SQL_COPT_SS_BASE+3) /* Force integrated security on login */
#define SQL_COPT_SS_PRESERVE_CURSORS (SQL_COPT_SS_BASE+4) /* Preserve server cursors after SQLTransact */
#define SQL_COPT_SS_USER_DATA (SQL_COPT_SS_BASE+5) /* dbgetuserdata/dbsetuserdata */
#define SQL_COPT_SS_ENLIST_IN_XA SQL_ATTR_ENLIST_IN_XA /* Enlist in a XA transaction */
#define SQL_COPT_SS_FALLBACK_CONNECT (SQL_COPT_SS_BASE+10) /* Enables FallBack connections */
#define SQL_COPT_SS_QUOTED_IDENT (SQL_COPT_SS_BASE+17) /* Enable/Disable Quoted Identifiers */
#define SQL_COPT_SS_ANSI_NPW (SQL_COPT_SS_BASE+18) /* Enable/Disable ANSI NULL, Padding and Warnings */
#define SQL_COPT_SS_BCP (SQL_COPT_SS_BASE+19) /* Allow BCP usage on connection */
#define SQL_COPT_SS_TRANSLATE (SQL_COPT_SS_BASE+20) /* Perform code page translation */
#define SQL_COPT_SS_ATTACHDBFILENAME (SQL_COPT_SS_BASE+21) /* File name to be attached as a database */
#define SQL_COPT_SS_CONCAT_NULL (SQL_COPT_SS_BASE+22) /* Enable/Disable CONCAT_NULL_YIELDS_NULL */
#define SQL_COPT_SS_ENCRYPT (SQL_COPT_SS_BASE+23) /* Allow strong encryption for data */
#define SQL_COPT_SS_MARS_ENABLED (SQL_COPT_SS_BASE+24) /* Multiple active result set per connection */
#define SQL_COPT_SS_OLDPWD (SQL_COPT_SS_BASE+26) /* Old Password, used when changing password during login */
#define SQL_COPT_SS_TXN_ISOLATION (SQL_COPT_SS_BASE+27) /* Used to set/get any driver-specific or ODBC-defined TXN iso level */
#define SQL_COPT_SS_TRUST_SERVER_CERTIFICATE (SQL_COPT_SS_BASE+28) /* Trust server certificate */
#define SQL_COPT_SS_SERVER_SPN (SQL_COPT_SS_BASE+29) /* Server SPN */
#define SQL_COPT_SS_INTEGRATED_AUTHENTICATION_METHOD (SQL_COPT_SS_BASE+31) /* The integrated authentication method used for the connection */
#define SQL_COPT_SS_MUTUALLY_AUTHENTICATED (SQL_COPT_SS_BASE+32) /* Used to decide if the connection is mutually authenticated */
#define SQL_COPT_SS_CLIENT_CONNECTION_ID (SQL_COPT_SS_BASE+33) /* Post connection attribute used to get the ConnectionIDMET */
#define SQL_COPT_SS_CONNECT_RETRY_COUNT (SQL_COPT_SS_BASE+34) /* Post connection attribute used to get ConnectRetryCount */
#define SQL_COPT_SS_CONNECT_RETRY_INTERVAL (SQL_COPT_SS_BASE+35) /* Post connection attribute used to get ConnectRetryInterval */
/*
* SQLSetStmtAttr Microsoft ODBC Driver for SQL Server specific defines.
* Statement attributes
*/
#define SQL_SOPT_SS_BASE 1225
#define SQL_SOPT_SS_TEXTPTR_LOGGING (SQL_SOPT_SS_BASE+0) /* Text pointer logging */
#define SQL_SOPT_SS_CURRENT_COMMAND (SQL_SOPT_SS_BASE+1) /* dbcurcmd SQLGetStmtOption only */
#define SQL_SOPT_SS_HIDDEN_COLUMNS (SQL_SOPT_SS_BASE+2) /* Expose FOR BROWSE hidden columns */
#define SQL_SOPT_SS_NOBROWSETABLE (SQL_SOPT_SS_BASE+3) /* Set NOBROWSETABLE option */
#define SQL_SOPT_SS_CURSOR_OPTIONS (SQL_SOPT_SS_BASE+5) /* Server cursor options */
#define SQL_SOPT_SS_NOCOUNT_STATUS (SQL_SOPT_SS_BASE+6) /* Real vs. Not Real row count indicator */
#define SQL_SOPT_SS_DEFER_PREPARE (SQL_SOPT_SS_BASE+7) /* Defer prepare until necessary */
#define SQL_SOPT_SS_QUERYNOTIFICATION_TIMEOUT (SQL_SOPT_SS_BASE+8) /* Notification timeout */
#define SQL_SOPT_SS_QUERYNOTIFICATION_MSGTEXT (SQL_SOPT_SS_BASE+9) /* Notification message text */
#define SQL_SOPT_SS_QUERYNOTIFICATION_OPTIONS (SQL_SOPT_SS_BASE+10)/* SQL service broker name */
#define SQL_SOPT_SS_PARAM_FOCUS (SQL_SOPT_SS_BASE+11)/* Direct subsequent calls to parameter related methods to set properties on constituent columns/parameters of container types */
#define SQL_SOPT_SS_NAME_SCOPE (SQL_SOPT_SS_BASE+12)/* Sets name scope for subsequent catalog function calls */
#define SQL_SOPT_SS_COLUMN_ENCRYPTION (SQL_SOPT_SS_BASE+13)/* Sets the column encryption mode */
#define SQL_SOPT_SS_MAX_USED SQL_SOPT_SS_COLUMN_ENCRYPTION
/* Define old names */
#define SQL_TEXTPTR_LOGGING SQL_SOPT_SS_TEXTPTR_LOGGING
#define SQL_COPT_SS_BASE_EX 1240
#define SQL_COPT_SS_BROWSE_CONNECT (SQL_COPT_SS_BASE_EX+1) /* Browse connect mode of operation */
#define SQL_COPT_SS_BROWSE_SERVER (SQL_COPT_SS_BASE_EX+2) /* Single Server browse request. */
#define SQL_COPT_SS_WARN_ON_CP_ERROR (SQL_COPT_SS_BASE_EX+3) /* Issues warning when data from the server had a loss during code page conversion. */
#define SQL_COPT_SS_CONNECTION_DEAD (SQL_COPT_SS_BASE_EX+4) /* dbdead SQLGetConnectOption only. It will try to ping the server. Expensive connection check */
#define SQL_COPT_SS_BROWSE_CACHE_DATA (SQL_COPT_SS_BASE_EX+5) /* Determines if we should cache browse info. Used when returned buffer is greater then ODBC limit (32K) */
#define SQL_COPT_SS_RESET_CONNECTION (SQL_COPT_SS_BASE_EX+6) /* When this option is set, we will perform connection reset on next packet */
#define SQL_COPT_SS_APPLICATION_INTENT (SQL_COPT_SS_BASE_EX+7) /* Application Intent */
#define SQL_COPT_SS_MULTISUBNET_FAILOVER (SQL_COPT_SS_BASE_EX+8) /* Multi-subnet Failover */
#define SQL_COPT_SS_TNIR (SQL_COPT_SS_BASE_EX+9) /* Transparent Network IP Resolution */
#define SQL_COPT_SS_COLUMN_ENCRYPTION (SQL_COPT_SS_BASE_EX+10) /* Column Encryption Enabled or Disabled */
#define SQL_COPT_SS_CEKEYSTOREPROVIDER (SQL_COPT_SS_BASE_EX+11) /* Load a keystore provider or read the list of loaded keystore providers */
#define SQL_COPT_SS_CEKEYSTOREDATA (SQL_COPT_SS_BASE_EX+12) /* Communicate with loaded keystore providers */
#define SQL_COPT_SS_TRUSTEDCMKPATHS (SQL_COPT_SS_BASE_EX+13) /* List of trusted CMK paths */
#define SQL_COPT_SS_CEKCACHETTL (SQL_COPT_SS_BASE_EX+14) /* Symmetric Key Cache TTL */
#define SQL_COPT_SS_AUTHENTICATION (SQL_COPT_SS_BASE_EX+15) /* The authentication method used for the connection */
#define SQL_COPT_SS_ACCESS_TOKEN (SQL_COPT_SS_BASE_EX+16) /* The authentication access token used for the connection */
#define SQL_COPT_SS_USE_FMTONLY (SQL_COPT_SS_BASE_EX+17) /* The flag to Set FMTONLY ON/OFF */
/* SQLSetConnectAttr MS driver additional specific defines. */
#define SQL_COPT_SS_BASE_ADD 1400
#define SQL_COPT_SS_DATACLASSIFICATION_VERSION (SQL_COPT_SS_BASE_ADD + 0) /* The flag to Set/Get DATACLASSIFICATION version support */
#define SQL_COPT_SS_SPID (SQL_COPT_SS_BASE_ADD + 1) /* The flag to Get SPID */
#define SQL_COPT_SS_AUTOBEGINTXN (SQL_COPT_SS_BASE_ADD + 2) /* Flag to set whether transactions are automatically started */
/*
* SQLColAttributes driver specific defines.
* SQLSetDescField/SQLGetDescField driver specific defines.
* Microsoft has 1200 thru 1249 reserved for Microsoft ODBC Driver for SQL Server usage.
*/
#define SQL_CA_SS_BASE 1200
#define SQL_CA_SS_COLUMN_SSTYPE (SQL_CA_SS_BASE+0) /* dbcoltype/dbalttype */
#define SQL_CA_SS_COLUMN_UTYPE (SQL_CA_SS_BASE+1) /* dbcolutype/dbaltutype */
#define SQL_CA_SS_NUM_ORDERS (SQL_CA_SS_BASE+2) /* dbnumorders */
#define SQL_CA_SS_COLUMN_ORDER (SQL_CA_SS_BASE+3) /* dbordercol */
#define SQL_CA_SS_COLUMN_VARYLEN (SQL_CA_SS_BASE+4) /* dbvarylen */
#define SQL_CA_SS_NUM_COMPUTES (SQL_CA_SS_BASE+5) /* dbnumcompute */
#define SQL_CA_SS_COMPUTE_ID (SQL_CA_SS_BASE+6) /* dbnextrow status return */
#define SQL_CA_SS_COMPUTE_BYLIST (SQL_CA_SS_BASE+7) /* dbbylist */
#define SQL_CA_SS_COLUMN_ID (SQL_CA_SS_BASE+8) /* dbaltcolid */
#define SQL_CA_SS_COLUMN_OP (SQL_CA_SS_BASE+9) /* dbaltop */
#define SQL_CA_SS_COLUMN_SIZE (SQL_CA_SS_BASE+10) /* dbcollen */
#define SQL_CA_SS_COLUMN_HIDDEN (SQL_CA_SS_BASE+11) /* Column is hidden (FOR BROWSE) */
#define SQL_CA_SS_COLUMN_KEY (SQL_CA_SS_BASE+12) /* Column is key column (FOR BROWSE) */
#define SQL_CA_SS_COLUMN_COLLATION (SQL_CA_SS_BASE+14) /* Column collation (only for chars) */
#define SQL_CA_SS_VARIANT_TYPE (SQL_CA_SS_BASE+15)
#define SQL_CA_SS_VARIANT_SQL_TYPE (SQL_CA_SS_BASE+16)
#define SQL_CA_SS_VARIANT_SERVER_TYPE (SQL_CA_SS_BASE+17)
/* XML, CLR UDT, and table valued parameter related metadata */
#define SQL_CA_SS_UDT_CATALOG_NAME (SQL_CA_SS_BASE+18) /* UDT catalog name */
#define SQL_CA_SS_UDT_SCHEMA_NAME (SQL_CA_SS_BASE+19) /* UDT schema name */
#define SQL_CA_SS_UDT_TYPE_NAME (SQL_CA_SS_BASE+20) /* UDT type name */
#define SQL_CA_SS_UDT_ASSEMBLY_TYPE_NAME (SQL_CA_SS_BASE+21) /* Qualified name of the assembly containing the UDT class */
#define SQL_CA_SS_XML_SCHEMACOLLECTION_CATALOG_NAME (SQL_CA_SS_BASE+22) /* Name of the catalog that contains XML Schema collection */
#define SQL_CA_SS_XML_SCHEMACOLLECTION_SCHEMA_NAME (SQL_CA_SS_BASE+23) /* Name of the schema that contains XML Schema collection */
#define SQL_CA_SS_XML_SCHEMACOLLECTION_NAME (SQL_CA_SS_BASE+24) /* Name of the XML Schema collection */
#define SQL_CA_SS_CATALOG_NAME (SQL_CA_SS_BASE+25) /* Catalog name */
#define SQL_CA_SS_SCHEMA_NAME (SQL_CA_SS_BASE+26) /* Schema name */
#define SQL_CA_SS_TYPE_NAME (SQL_CA_SS_BASE+27) /* Type name */
/* table valued parameter related metadata */
#define SQL_CA_SS_COLUMN_COMPUTED (SQL_CA_SS_BASE+29) /* column is computed */
#define SQL_CA_SS_COLUMN_IN_UNIQUE_KEY (SQL_CA_SS_BASE+30) /* column is part of a unique key */
#define SQL_CA_SS_COLUMN_SORT_ORDER (SQL_CA_SS_BASE+31) /* column sort order */
#define SQL_CA_SS_COLUMN_SORT_ORDINAL (SQL_CA_SS_BASE+32) /* column sort ordinal */
#define SQL_CA_SS_COLUMN_HAS_DEFAULT_VALUE (SQL_CA_SS_BASE+33) /* column has default value for all rows of the table valued parameter */
/* sparse column related metadata */
#define SQL_CA_SS_IS_COLUMN_SET (SQL_CA_SS_BASE+34) /* column is a column-set column for sparse columns */
/* Legacy datetime related metadata */
#define SQL_CA_SS_SERVER_TYPE (SQL_CA_SS_BASE+35) /* column type to send on the wire for datetime types */
/* force column encryption */
#define SQL_CA_SS_FORCE_ENCRYPT (SQL_CA_SS_BASE+36) /* indicate mandatory encryption for this parameter */
/* Data Classification */
#define SQL_CA_SS_DATA_CLASSIFICATION (SQL_CA_SS_BASE+37) /* retrieve data classification information */
/* Data Classification version*/
#define SQL_CA_SS_DATA_CLASSIFICATION_VERSION (SQL_CA_SS_BASE+38) /* retrieve data classification version */
/* Defines returned by SQL_ATTR_CURSOR_TYPE/SQL_CURSOR_TYPE */
#define SQL_CURSOR_FAST_FORWARD_ONLY 8 /* Only returned by SQLGetStmtAttr/Option */
/* Defines for use with SQL_COPT_SS_USE_PROC_FOR_PREP */
#define SQL_UP_OFF 0L /* Procedures won't be used for prepare */
#define SQL_UP_ON 1L /* Procedures will be used for prepare */
#define SQL_UP_ON_DROP 2L /* Temp procedures will be explicitly dropped */
#define SQL_UP_DEFAULT SQL_UP_ON
/* Defines for use with SQL_COPT_SS_INTEGRATED_SECURITY - Pre-Connect Option only */
#define SQL_IS_OFF 0L
#define SQL_IS_ON 1L
#define SQL_IS_DEFAULT SQL_IS_OFF
/* Defines for use with SQL_COPT_SS_AUTHENTICATION - Pre-Connect Option only */
#define SQL_AU_NONE 0L /* Authentication not used */
#define SQL_AU_PASSWORD 1L /* SQL server authentication is used */
#define SQL_AU_AD_INTEGRATED 2L /* Active Directory integrated authentication is used */
#define SQL_AU_AD_PASSWORD 3L /* Active Directory password authentication is used */
#define SQL_AU_RESET 5L /* Reset the value to attribute not set to anything. */
#define SQL_AU_AD_MSI 6L /* Active Directory Manage Service Identity authentication is used */
#define SQL_AU_AD_SPA 7L /* Active Directory Service Principal authentication is used */
/* Defines for use with SQL_COPT_SS_PRESERVE_CURSORS */
#define SQL_PC_OFF 0L /* Cursors are closed on SQLTransact */
#define SQL_PC_ON 1L /* Cursors remain open on SQLTransact */
#define SQL_PC_DEFAULT SQL_PC_OFF
/* Defines for use with SQL_COPT_SS_USER_DATA */
#define SQL_UD_NOTSET NULL /* No user data pointer set */
/* Defines for use with SQL_COPT_SS_TRANSLATE */
#define SQL_XL_OFF 0L /* Code page translation is not performed */
#define SQL_XL_ON 1L /* Code page translation is performed */
#define SQL_XL_DEFAULT SQL_XL_ON
/* Defines for use with SQL_COPT_SS_FALLBACK_CONNECT - Pre-Connect Option only */
#define SQL_FB_OFF 0L /* FallBack connections are disabled */
#define SQL_FB_ON 1L /* FallBack connections are enabled */
#define SQL_FB_DEFAULT SQL_FB_OFF
/* Defines for use with SQL_COPT_SS_BCP - Pre-Connect Option only */
#define SQL_BCP_OFF 0L /* BCP is not allowed on connection */
#define SQL_BCP_ON 1L /* BCP is allowed on connection */
#define SQL_BCP_DEFAULT SQL_BCP_OFF
/* Defines for use with SQL_COPT_SS_QUOTED_IDENT */
#define SQL_QI_OFF 0L /* Quoted identifiers are enable */
#define SQL_QI_ON 1L /* Quoted identifiers are disabled */
#define SQL_QI_DEFAULT SQL_QI_ON
/* Defines for use with SQL_COPT_SS_ANSI_NPW - Pre-Connect Option only */
#define SQL_AD_OFF 0L /* ANSI NULLs, Padding and Warnings are enabled */
#define SQL_AD_ON 1L /* ANSI NULLs, Padding and Warnings are disabled */
#define SQL_AD_DEFAULT SQL_AD_ON
/* Defines for use with SQL_COPT_SS_CONCAT_NULL - Pre-Connect Option only */
#define SQL_CN_OFF 0L /* CONCAT_NULL_YIELDS_NULL is off */
#define SQL_CN_ON 1L /* CONCAT_NULL_YIELDS_NULL is on */
#define SQL_CN_DEFAULT SQL_CN_ON
/* Defines for use with SQL_SOPT_SS_TEXTPTR_LOGGING */
#define SQL_TL_OFF 0L /* No logging on text pointer ops */
#define SQL_TL_ON 1L /* Logging occurs on text pointer ops */
#define SQL_TL_DEFAULT SQL_TL_ON
/* Defines for use with SQL_SOPT_SS_HIDDEN_COLUMNS */
#define SQL_HC_OFF 0L /* FOR BROWSE columns are hidden */
#define SQL_HC_ON 1L /* FOR BROWSE columns are exposed */
#define SQL_HC_DEFAULT SQL_HC_OFF
/* Defines for use with SQL_SOPT_SS_NOBROWSETABLE */
#define SQL_NB_OFF 0L /* NO_BROWSETABLE is off */
#define SQL_NB_ON 1L /* NO_BROWSETABLE is on */
#define SQL_NB_DEFAULT SQL_NB_OFF
/* Defines for use with SQL_SOPT_SS_CURSOR_OPTIONS */
#define SQL_CO_OFF 0L /* Clear all cursor options */
#define SQL_CO_FFO 1L /* Fast-forward cursor will be used */
#define SQL_CO_AF 2L /* Autofetch on cursor open */
#define SQL_CO_FFO_AF (SQL_CO_FFO|SQL_CO_AF) /* Fast-forward cursor with autofetch */
#define SQL_CO_FIREHOSE_AF 4L /* Auto fetch on fire-hose cursors */
#define SQL_CO_DEFAULT SQL_CO_OFF
/* Defines for use with SQL_SOPT_SS_COLUMN_ENCRYPTION */
#define SQL_CE_DISABLED 0L /* Disabled */
#define SQL_CE_RESULTSETONLY 1L /* Decryption Only (resultsets and return values) */
#define SQL_CE_ENABLED 3L /* Enabled (both encryption and decryption) */
/* Defines for use with SQL_COPT_SS_COLUMN_ENCRYPTION */
#define SQL_COLUMN_ENCRYPTION_DISABLE 0L
#define SQL_COLUMN_ENCRYPTION_ENABLE 1L
#define SQL_COLUMN_ENCRYPTION_DEFAULT SQL_COLUMN_ENCRYPTION_DISABLE
/* Defines for use with SQL_COPT_SS_CEKCACHETTL */
#define SQL_CEKCACHETTL_DEFAULT 7200L /* TTL value in seconds (2 hours) */
/* SQL_SOPT_SS_NOCOUNT_STATUS */
#define SQL_NC_OFF 0L
#define SQL_NC_ON 1L
/* SQL_SOPT_SS_DEFER_PREPARE */
#define SQL_DP_OFF 0L
#define SQL_DP_ON 1L
/* SQL_SOPT_SS_NAME_SCOPE */
#define SQL_SS_NAME_SCOPE_TABLE 0L
#define SQL_SS_NAME_SCOPE_TABLE_TYPE 1L
#define SQL_SS_NAME_SCOPE_EXTENDED 2L
#define SQL_SS_NAME_SCOPE_SPARSE_COLUMN_SET 3L
#define SQL_SS_NAME_SCOPE_DEFAULT SQL_SS_NAME_SCOPE_TABLE
/* SQL_COPT_SS_ENCRYPT */
#define SQL_EN_OFF 0L
#define SQL_EN_ON 1L
/* SQL_COPT_SS_TRUST_SERVER_CERTIFICATE */
#define SQL_TRUST_SERVER_CERTIFICATE_NO 0L
#define SQL_TRUST_SERVER_CERTIFICATE_YES 1L
/* SQL_COPT_SS_BROWSE_CONNECT */
#define SQL_MORE_INFO_NO 0L
#define SQL_MORE_INFO_YES 1L
/* SQL_COPT_SS_BROWSE_CACHE_DATA */
#define SQL_CACHE_DATA_NO 0L
#define SQL_CACHE_DATA_YES 1L
/* SQL_COPT_SS_RESET_CONNECTION */
#define SQL_RESET_YES 1L
/* SQL_COPT_SS_WARN_ON_CP_ERROR */
#define SQL_WARN_NO 0L
#define SQL_WARN_YES 1L
/* SQL_COPT_SS_MARS_ENABLED */
#define SQL_MARS_ENABLED_NO 0L
#define SQL_MARS_ENABLED_YES 1L
/* SQL_TXN_ISOLATION_OPTION bitmasks */
#define SQL_TXN_SS_SNAPSHOT 0x00000020L
/* SQL_AUTOBEGINTXN options */
#define SQL_AUTOBEGINTXN_OFF 0UL
#define SQL_AUTOBEGINTXN_ON 1UL
#define SQL_AUTOBEGINTXN_DEFAULT SQL_AUTOBEGINTXN_ON
/* The following are defines for SQL_CA_SS_COLUMN_SORT_ORDER */
#define SQL_SS_ORDER_UNSPECIFIED 0L
#define SQL_SS_DESCENDING_ORDER 1L
#define SQL_SS_ASCENDING_ORDER 2L
#define SQL_SS_ORDER_DEFAULT SQL_SS_ORDER_UNSPECIFIED
/*
* Driver specific SQL data type defines.
* Microsoft has -150 thru -199 reserved for Microsoft ODBC Driver for SQL Server usage.
*/
#define SQL_SS_VARIANT (-150)
#define SQL_SS_UDT (-151)
#define SQL_SS_XML (-152)
#define SQL_SS_TABLE (-153)
#define SQL_SS_TIME2 (-154)
#define SQL_SS_TIMESTAMPOFFSET (-155)
/* Local types to be used with SQL_CA_SS_SERVER_TYPE */
#define SQL_SS_TYPE_DEFAULT 0L
#define SQL_SS_TYPE_SMALLDATETIME 1L
#define SQL_SS_TYPE_DATETIME 2L
#define SQL_SS_TYPE_MONEY 3L
#define SQL_SS_TYPE_SMALLMONEY 4L
/* Extended C Types range 4000 and above. Range of -100 thru 200 is reserved by Driver Manager. */
#define SQL_C_TYPES_EXTENDED 0x04000L
#define SQL_C_SS_TIME2 (SQL_C_TYPES_EXTENDED+0)
#define SQL_C_SS_TIMESTAMPOFFSET (SQL_C_TYPES_EXTENDED+1)
#ifndef SQLNCLI_NO_BCP
/* Define the symbol SQLNCLI_NO_BCP if you are not using BCP in your application
and you want to exclude the BCP-related definitions in this header file. */
#ifndef SQLTEXT
/* SQL Server Data Type defines.
New types for SQL 6.0 and later servers */
#define SQLTEXT 0x23
#define SQLVARBINARY 0x25
#define SQLINTN 0x26
#define SQLVARCHAR 0x27
#define SQLBINARY 0x2d
#define SQLIMAGE 0x22
#define SQLCHARACTER 0x2f
#define SQLINT1 0x30
#define SQLBIT 0x32
#define SQLINT2 0x34
#define SQLINT4 0x38
#define SQLMONEY 0x3c
#define SQLDATETIME 0x3d
#define SQLFLT8 0x3e
#define SQLFLTN 0x6d
#define SQLMONEYN 0x6e
#define SQLDATETIMN 0x6f
#define SQLFLT4 0x3b
#define SQLMONEY4 0x7a
#define SQLDATETIM4 0x3a
/* New types for SQL 6.0 and later servers */
#define SQLDECIMAL 0x6a
#define SQLNUMERIC 0x6c
/* New types for SQL 7.0 and later servers */
#define SQLUNIQUEID 0x24
#define SQLBIGCHAR 0xaf
#define SQLBIGVARCHAR 0xa7
#define SQLBIGBINARY 0xad
#define SQLBIGVARBINARY 0xa5
#define SQLBITN 0x68
#define SQLNCHAR 0xef
#define SQLNVARCHAR 0xe7
#define SQLNTEXT 0x63
/* New types for SQL 2000 and later servers */
#define SQLINT8 0x7f
#define SQLVARIANT 0x62
/* New types for SQL 2005 and later servers */
#define SQLUDT 0xf0
#define SQLXML 0xf1
/* New types for SQL 2008 and later servers */
#define SQLTABLE 0xf3
#define SQLDATEN 0x28
#define SQLTIMEN 0x29
#define SQLDATETIME2N 0x2a
#define SQLDATETIMEOFFSETN 0x2b
/* Define old names */
#define SQLDECIMALN 0x6a
#define SQLNUMERICN 0x6c
#endif /* SQLTEXT */
#endif /* SQLNCLI_NO_BCP */
/* SQL_SS_LENGTH_UNLIMITED is used to describe the max length of
VARCHAR(max), VARBINARY(max), NVARCHAR(max), and XML columns */
#define SQL_SS_LENGTH_UNLIMITED 0
/*
* User Data Type definitions.
* Returned by SQLColAttributes/SQL_CA_SS_COLUMN_UTYPE.
*/
#define SQLudtBINARY 3
#define SQLudtBIT 16
#define SQLudtBITN 0
#define SQLudtCHAR 1
#define SQLudtDATETIM4 22
#define SQLudtDATETIME 12
#define SQLudtDATETIMN 15
#define SQLudtDECML 24
#define SQLudtDECMLN 26
#define SQLudtFLT4 23
#define SQLudtFLT8 8
#define SQLudtFLTN 14
#define SQLudtIMAGE 20
#define SQLudtINT1 5
#define SQLudtINT2 6
#define SQLudtINT4 7
#define SQLudtINTN 13
#define SQLudtMONEY 11
#define SQLudtMONEY4 21
#define SQLudtMONEYN 17
#define SQLudtNUM 10
#define SQLudtNUMN 25
#define SQLudtSYSNAME 18
#define SQLudtTEXT 19
#define SQLudtTIMESTAMP 80
#define SQLudtUNIQUEIDENTIFIER 0
#define SQLudtVARBINARY 4
#define SQLudtVARCHAR 2
#define MIN_USER_DATATYPE 256
/*
* Aggregate operator types.
* Returned by SQLColAttributes/SQL_CA_SS_COLUMN_OP.
*/
#define SQLAOPSTDEV 0x30 /* Standard deviation */
#define SQLAOPSTDEVP 0x31 /* Standard deviation population */
#define SQLAOPVAR 0x32 /* Variance */
#define SQLAOPVARP 0x33 /* Variance population */
#define SQLAOPCNT 0x4b /* Count */
#define SQLAOPSUM 0x4d /* Sum */
#define SQLAOPAVG 0x4f /* Average */
#define SQLAOPMIN 0x51 /* Min */
#define SQLAOPMAX 0x52 /* Max */
#define SQLAOPANY 0x53 /* Any */
#define SQLAOPNOOP 0x56 /* None */
/*
* SQLGetDiagField driver specific defines.
* Microsoft has -1150 thru -1199 reserved for Microsoft ODBC Driver for SQL Server usage.
*/
#define SQL_DIAG_SS_BASE (-1150)
#define SQL_DIAG_SS_MSGSTATE (SQL_DIAG_SS_BASE)
#define SQL_DIAG_SS_SEVERITY (SQL_DIAG_SS_BASE-1)
#define SQL_DIAG_SS_SRVNAME (SQL_DIAG_SS_BASE-2)
#define SQL_DIAG_SS_PROCNAME (SQL_DIAG_SS_BASE-3)
#define SQL_DIAG_SS_LINE (SQL_DIAG_SS_BASE-4)
/*
* SQLGetDiagField/SQL_DIAG_DYNAMIC_FUNCTION_CODE driver specific defines.
* Microsoft has -200 thru -299 reserved for Microsoft ODBC Driver for SQL Server usage.
*/
#define SQL_DIAG_DFC_SS_BASE (-200)
#define SQL_DIAG_DFC_SS_ALTER_DATABASE (SQL_DIAG_DFC_SS_BASE-0)
#define SQL_DIAG_DFC_SS_CHECKPOINT (SQL_DIAG_DFC_SS_BASE-1)
#define SQL_DIAG_DFC_SS_CONDITION (SQL_DIAG_DFC_SS_BASE-2)
#define SQL_DIAG_DFC_SS_CREATE_DATABASE (SQL_DIAG_DFC_SS_BASE-3)
#define SQL_DIAG_DFC_SS_CREATE_DEFAULT (SQL_DIAG_DFC_SS_BASE-4)
#define SQL_DIAG_DFC_SS_CREATE_PROCEDURE (SQL_DIAG_DFC_SS_BASE-5)
#define SQL_DIAG_DFC_SS_CREATE_RULE (SQL_DIAG_DFC_SS_BASE-6)
#define SQL_DIAG_DFC_SS_CREATE_TRIGGER (SQL_DIAG_DFC_SS_BASE-7)
#define SQL_DIAG_DFC_SS_CURSOR_DECLARE (SQL_DIAG_DFC_SS_BASE-8)
#define SQL_DIAG_DFC_SS_CURSOR_OPEN (SQL_DIAG_DFC_SS_BASE-9)
#define SQL_DIAG_DFC_SS_CURSOR_FETCH (SQL_DIAG_DFC_SS_BASE-10)
#define SQL_DIAG_DFC_SS_CURSOR_CLOSE (SQL_DIAG_DFC_SS_BASE-11)
#define SQL_DIAG_DFC_SS_DEALLOCATE_CURSOR (SQL_DIAG_DFC_SS_BASE-12)
#define SQL_DIAG_DFC_SS_DBCC (SQL_DIAG_DFC_SS_BASE-13)
#define SQL_DIAG_DFC_SS_DISK (SQL_DIAG_DFC_SS_BASE-14)
#define SQL_DIAG_DFC_SS_DROP_DATABASE (SQL_DIAG_DFC_SS_BASE-15)
#define SQL_DIAG_DFC_SS_DROP_DEFAULT (SQL_DIAG_DFC_SS_BASE-16)
#define SQL_DIAG_DFC_SS_DROP_PROCEDURE (SQL_DIAG_DFC_SS_BASE-17)
#define SQL_DIAG_DFC_SS_DROP_RULE (SQL_DIAG_DFC_SS_BASE-18)
#define SQL_DIAG_DFC_SS_DROP_TRIGGER (SQL_DIAG_DFC_SS_BASE-19)
#define SQL_DIAG_DFC_SS_DUMP_DATABASE (SQL_DIAG_DFC_SS_BASE-20)
#define SQL_DIAG_DFC_SS_BACKUP_DATABASE (SQL_DIAG_DFC_SS_BASE-20)
#define SQL_DIAG_DFC_SS_DUMP_TABLE (SQL_DIAG_DFC_SS_BASE-21)
#define SQL_DIAG_DFC_SS_DUMP_TRANSACTION (SQL_DIAG_DFC_SS_BASE-22)
#define SQL_DIAG_DFC_SS_BACKUP_TRANSACTION (SQL_DIAG_DFC_SS_BASE-22)
#define SQL_DIAG_DFC_SS_GOTO (SQL_DIAG_DFC_SS_BASE-23)
#define SQL_DIAG_DFC_SS_INSERT_BULK (SQL_DIAG_DFC_SS_BASE-24)
#define SQL_DIAG_DFC_SS_KILL (SQL_DIAG_DFC_SS_BASE-25)
#define SQL_DIAG_DFC_SS_LOAD_DATABASE (SQL_DIAG_DFC_SS_BASE-26)
#define SQL_DIAG_DFC_SS_RESTORE_DATABASE (SQL_DIAG_DFC_SS_BASE-26)
#define SQL_DIAG_DFC_SS_LOAD_HEADERONLY (SQL_DIAG_DFC_SS_BASE-27)
#define SQL_DIAG_DFC_SS_RESTORE_HEADERONLY (SQL_DIAG_DFC_SS_BASE-27)
#define SQL_DIAG_DFC_SS_LOAD_TABLE (SQL_DIAG_DFC_SS_BASE-28)
#define SQL_DIAG_DFC_SS_LOAD_TRANSACTION (SQL_DIAG_DFC_SS_BASE-29)
#define SQL_DIAG_DFC_SS_RESTORE_TRANSACTION (SQL_DIAG_DFC_SS_BASE-29)
#define SQL_DIAG_DFC_SS_PRINT (SQL_DIAG_DFC_SS_BASE-30)
#define SQL_DIAG_DFC_SS_RAISERROR (SQL_DIAG_DFC_SS_BASE-31)
#define SQL_DIAG_DFC_SS_READTEXT (SQL_DIAG_DFC_SS_BASE-32)
#define SQL_DIAG_DFC_SS_RECONFIGURE (SQL_DIAG_DFC_SS_BASE-33)
#define SQL_DIAG_DFC_SS_RETURN (SQL_DIAG_DFC_SS_BASE-34)
#define SQL_DIAG_DFC_SS_SELECT_INTO (SQL_DIAG_DFC_SS_BASE-35)
#define SQL_DIAG_DFC_SS_SET (SQL_DIAG_DFC_SS_BASE-36)
#define SQL_DIAG_DFC_SS_SET_IDENTITY_INSERT (SQL_DIAG_DFC_SS_BASE-37)
#define SQL_DIAG_DFC_SS_SET_ROW_COUNT (SQL_DIAG_DFC_SS_BASE-38)
#define SQL_DIAG_DFC_SS_SET_STATISTICS (SQL_DIAG_DFC_SS_BASE-39)
#define SQL_DIAG_DFC_SS_SET_TEXTSIZE (SQL_DIAG_DFC_SS_BASE-40)
#define SQL_DIAG_DFC_SS_SETUSER (SQL_DIAG_DFC_SS_BASE-41)
#define SQL_DIAG_DFC_SS_SHUTDOWN (SQL_DIAG_DFC_SS_BASE-42)
#define SQL_DIAG_DFC_SS_TRANS_BEGIN (SQL_DIAG_DFC_SS_BASE-43)
#define SQL_DIAG_DFC_SS_TRANS_COMMIT (SQL_DIAG_DFC_SS_BASE-44)
#define SQL_DIAG_DFC_SS_TRANS_PREPARE (SQL_DIAG_DFC_SS_BASE-45)
#define SQL_DIAG_DFC_SS_TRANS_ROLLBACK (SQL_DIAG_DFC_SS_BASE-46)
#define SQL_DIAG_DFC_SS_TRANS_SAVE (SQL_DIAG_DFC_SS_BASE-47)
#define SQL_DIAG_DFC_SS_TRUNCATE_TABLE (SQL_DIAG_DFC_SS_BASE-48)
#define SQL_DIAG_DFC_SS_UPDATE_STATISTICS (SQL_DIAG_DFC_SS_BASE-49)
#define SQL_DIAG_DFC_SS_UPDATETEXT (SQL_DIAG_DFC_SS_BASE-50)
#define SQL_DIAG_DFC_SS_USE (SQL_DIAG_DFC_SS_BASE-51)
#define SQL_DIAG_DFC_SS_WAITFOR (SQL_DIAG_DFC_SS_BASE-52)
#define SQL_DIAG_DFC_SS_WRITETEXT (SQL_DIAG_DFC_SS_BASE-53)
#define SQL_DIAG_DFC_SS_DENY (SQL_DIAG_DFC_SS_BASE-54)
#define SQL_DIAG_DFC_SS_SET_XCTLVL (SQL_DIAG_DFC_SS_BASE-55)
#define SQL_DIAG_DFC_SS_MERGE (SQL_DIAG_DFC_SS_BASE-56)
/* Severity codes for SQL_DIAG_SS_SEVERITY */
#define EX_ANY 0
#define EX_INFO 10
#define EX_MAXISEVERITY EX_INFO
#define EX_MISSING 11
#define EX_TYPE 12
#define EX_DEADLOCK 13
#define EX_PERMIT 14
#define EX_SYNTAX 15
#define EX_USER 16
#define EX_RESOURCE 17
#define EX_INTOK 18
#define MAXUSEVERITY EX_INTOK
#define EX_LIMIT 19
#define EX_CMDFATAL 20
#define MINFATALERR EX_CMDFATAL
#define EX_DBFATAL 21
#define EX_TABCORRUPT 22
#define EX_DBCORRUPT 23
#define EX_HARDWARE 24
#define EX_CONTROL 25
#pragma pack(8)
/* New Structure for TIME2 */
typedef struct tagSS_TIME2_STRUCT
{
SQLUSMALLINT hour;
SQLUSMALLINT minute;
SQLUSMALLINT second;
SQLUINTEGER fraction;
} SQL_SS_TIME2_STRUCT;
/* New Structure for TIMESTAMPOFFSET */
typedef struct tagSS_TIMESTAMPOFFSET_STRUCT
{
SQLSMALLINT year;
SQLUSMALLINT month;
SQLUSMALLINT day;
SQLUSMALLINT hour;
SQLUSMALLINT minute;
SQLUSMALLINT second;
SQLUINTEGER fraction;
SQLSMALLINT timezone_hour;
SQLSMALLINT timezone_minute;
} SQL_SS_TIMESTAMPOFFSET_STRUCT;
#pragma pack()
typedef struct AccessToken
{
unsigned int dataSize;
char data[];
} ACCESSTOKEN;
/*
* Keystore Provider interface definitions
*/
typedef struct CEKeystoreContext
{
void *envCtx;
void *dbcCtx;
void *stmtCtx;
} CEKEYSTORECONTEXT;
typedef void errFunc(CEKEYSTORECONTEXT *ctx, const wchar_t *msg, ...);
#define IDS_MSG(x) ((const wchar_t*)(x))
typedef struct CEKeystoreProvider
{
wchar_t *Name;
int (*Init)(CEKEYSTORECONTEXT *ctx, errFunc *onError);
int (*Read)(CEKEYSTORECONTEXT *ctx, errFunc *onError, void *data, unsigned int *len);
int (*Write)(CEKEYSTORECONTEXT *ctx, errFunc *onError, void *data, unsigned int len);
int (*DecryptCEK)(
CEKEYSTORECONTEXT *ctx,
errFunc *onError,
const wchar_t *keyPath,
const wchar_t *alg,
unsigned char *ecek,
unsigned short ecekLen,
unsigned char **cekOut,
unsigned short *cekLen);
int (*EncryptCEK)(
CEKEYSTORECONTEXT *ctx,
errFunc *onError,
const wchar_t *keyPath,
const wchar_t *alg,
unsigned char *cek,
unsigned short cekLen,
unsigned char **ecekOut,
unsigned short *ecekLen);
void (*Free)();
} CEKEYSTOREPROVIDER;
typedef struct CEKeystoreProvider2
{
wchar_t *Name;
int (*Init)(CEKEYSTORECONTEXT *ctx, errFunc *onError);
int (*Read)(CEKEYSTORECONTEXT *ctx, errFunc *onError, void *data, unsigned int *len);
int (*Write)(CEKEYSTORECONTEXT *ctx, errFunc *onError, void *data, unsigned int len);
int (*DecryptCEK)(
CEKEYSTORECONTEXT *ctx,
errFunc *onError,
const wchar_t *keyPath,
const wchar_t *alg,
unsigned char *ecek,
unsigned short ecekLen,
unsigned char **cekOut,
unsigned short *cekLen);
int (*EncryptCEK)(
CEKEYSTORECONTEXT *ctx,
errFunc *onError,
const wchar_t *keyPath,
const wchar_t *alg,
unsigned char *cek,
unsigned short cekLen,
unsigned char **ecekOut,
unsigned short *ecekLen);
int (*VerifyCMKMetadata)(
CEKEYSTORECONTEXT *ctx,
errFunc *onError,
const wchar_t *keyPath,
unsigned char *signature,
unsigned short sigLen);
void *reserved;
void (*Free)();
} CEKEYSTOREPROVIDER2;
typedef struct CEKeystoreData
{
wchar_t *name;
unsigned int dataSize;
char data[];
} CEKEYSTOREDATA;
/* The following constants are for the Azure Key Vault configuration interface */
#define AKV_CONFIG_FLAGS 0
#define AKVCFG_AUTHMODE 0x0000000F
#define AKVCFG_AUTHMODE_ACCESSTOKEN 0
#define AKVCFG_AUTHMODE_CLIENTKEY 1
#define AKVCFG_AUTHMODE_PASSWORD 2
#define AKVCFG_AUTHMODE_INTEGRATED 3
#define AKVCFG_AUTHMODE_CERTIFICATE 4
#define AKVCFG_AUTHMODE_MSI 5
#define AKVCFG_NOAUTORENEW 0x00000010
#define AKV_CONFIG_PRINCIPALID 1
#define AKV_CONFIG_AUTHSECRET 2
#define AKV_CONFIG_ACCESSTOKEN 3
#define AKV_CONFIG_TOKENEXPIRY 4
#define AKV_CONFIG_MAXRETRIES 5
#define AKV_CONFIG_RETRYTIMEOUT 6
#define AKV_CONFIG_RETRYWAIT 7
#define AKV_CONFIG_TRUSTEDENDPOINTS 8
#define AKV_CONFIG_RESET 255
/*
* BCP Definitions
*/
/* Error codes */
#define SUCCEED 1
#define FAIL 0
#define SUCCEED_ABORT 2
#define SUCCEED_ASYNC 3
/* Transfer directions */
#define DB_IN 1 /* Transfer from client to server */
#define DB_OUT 2 /* Transfer from server to client */
/* bcp_control option */
#define BCPMAXERRS 1 /* Sets max errors allowed */
#define BCPFIRST 2 /* Sets first row to be copied out */
#define BCPLAST 3 /* Sets number of rows to be copied out */
#define BCPBATCH 4 /* Sets input batch size */
#define BCPKEEPNULLS 5 /* Sets to insert NULLs for empty input values */
#define BCPABORT 6 /* Sets to have bcpexec return SUCCEED_ABORT */
#define BCPODBC 7 /* Sets ODBC canonical character output */
#define BCPKEEPIDENTITY 8 /* Sets IDENTITY_INSERT on */
#define BCPHINTSA 10 /* Sets server BCP hints (ANSI string) */
#define BCPHINTSW 11 /* Sets server BCP hints (UNICODE string) */
#define BCPFILECP 12 /* Sets clients code page for the file */
#define BCPUNICODEFILE 13 /* Sets that the file contains unicode header */
#define BCPTEXTFILE 14 /* Sets BCP mode to expect a text file and to detect Unicode or ANSI automatically */
#define BCPFILEFMT 15 /* Sets file format version */
#define BCPFMTXML 16 /* Sets the format file type to xml */
#define BCPFIRSTEX 17 /* Starting Row for BCP operation (64 bit) */
#define BCPLASTEX 18 /* Ending Row for BCP operation (64 bit) */
#define BCPROWCOUNT 19 /* Total Number of Rows Copied (64 bit) */
#define BCPDELAYREADFMT 20 /* Delay reading format file until bcp_exec */
/* BCPFILECP values
* Any valid code page that is installed on the client can be passed plus:
*/
#define BCPFILECP_RAW (-1) /* Data in file is in Server code page (no conversion) */
/* bcp_collen definition */
#define SQL_VARLEN_DATA (-10) /* Use default length for column */
/* BCP column format properties */
#define BCP_FMT_TYPE 0x01
#define BCP_FMT_INDICATOR_LEN 0x02
#define BCP_FMT_DATA_LEN 0x03
#define BCP_FMT_TERMINATOR 0x04
#define BCP_FMT_SERVER_COL 0x05
#define BCP_FMT_COLLATION 0x06
#define BCP_FMT_COLLATION_ID 0x07
/* bcp_setbulkmode properties */
#define BCP_OUT_CHARACTER_MODE 0x01
#define BCP_OUT_WIDE_CHARACTER_MODE 0x02
#define BCP_OUT_NATIVE_TEXT_MODE 0x03
#define BCP_OUT_NATIVE_MODE 0x04
#ifndef INT
typedef int INT;
typedef INT DBINT;
typedef DBINT * LPDBINT;
typedef unsigned char DBBOOL;
#ifndef _LPCBYTE_DEFINED
#define _LPCBYTE_DEFINED
typedef BYTE const* LPCBYTE;
#endif /* _LPCBYTE_DEFINED */
#endif /* INT */
/*
* BCP functions
*/
DBINT SQL_API bcp_batch(HDBC);
RETCODE SQL_API bcp_bind(HDBC, LPCBYTE, INT, DBINT, LPCBYTE, INT, INT, INT);
RETCODE SQL_API bcp_colfmt(HDBC, INT, BYTE, INT, DBINT, LPCBYTE, INT, INT);
RETCODE SQL_API bcp_collen(HDBC, DBINT, INT);
RETCODE SQL_API bcp_colptr(HDBC, LPCBYTE, INT);
RETCODE SQL_API bcp_columns(HDBC, INT);
RETCODE SQL_API bcp_control(HDBC, INT, void *);
DBINT SQL_API bcp_done(HDBC);
RETCODE SQL_API bcp_exec(HDBC, LPDBINT);
RETCODE SQL_API bcp_getcolfmt(HDBC, INT, INT, void *, INT, INT *);
RETCODE SQL_API bcp_moretext(HDBC, DBINT, LPCBYTE);
RETCODE SQL_API bcp_sendrow(HDBC);
RETCODE SQL_API bcp_setbulkmode(HDBC, INT, void*, INT cbField, void *, INT cbRow);
RETCODE SQL_API bcp_setcolfmt(HDBC, INT, INT, void *, INT);
#ifdef UNICODE
#define bcp_init bcp_initW
#define bcp_readfmt bcp_readfmtW
#define bcp_writefmt bcp_writefmtW
#define bcp_gettypename bcp_gettypenameW
#define dbprtype dbprtypeW
#define BCPHINTS BCPHINTSW
#else
#define bcp_init bcp_initA
#define bcp_readfmt bcp_readfmtA
#define bcp_writefmt bcp_writefmtA
#define bcp_gettypename bcp_gettypenameA
#define dbprtype dbprtypeA
#define BCPHINTS BCPHINTSA
#endif /* UNICODE */
/* Narrow and wide character names functions */
CHAR* SQL_API bcp_gettypenameA(INT, DBBOOL);
WCHAR* SQL_API bcp_gettypenameW(INT, DBBOOL);
RETCODE SQL_API bcp_initA(HDBC, LPCSTR, LPCSTR, LPCSTR, INT);
RETCODE SQL_API bcp_initW(HDBC, LPCWSTR, LPCWSTR, LPCWSTR, INT);
RETCODE SQL_API bcp_readfmtA(HDBC, LPCSTR);
RETCODE SQL_API bcp_readfmtW(HDBC, LPCWSTR);
RETCODE SQL_API bcp_writefmtA(HDBC, LPCSTR);
RETCODE SQL_API bcp_writefmtW(HDBC, LPCWSTR);
CHAR* SQL_API dbprtypeA(INT);
WCHAR* SQL_API dbprtypeW(INT);
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* ODBCVER */
#endif /* __msodbcsql_h__ */