ODBC status return codes

01000 01001 01002 01003 01004 01006 01007 01S00 01S01 01S02 01S06 01S07 01S08 01S09 -
07001 07002 07005 07006 07009 07S01 - - - - - - - - -
08001 08002 08003 08004 08007 08S01 - - - - - - - - -
21S01 21S02 - - - - - - - - - - - - -
22001 22002 22003 22007 22008 22012 22015 22018 22019 22025 22026 - - - -
23000 - - - - - - - - - - - - - -
24000 - - - - - - - - - - - - - -
25000 25S01 25S02 25S03 - - - - - - - - - - -
28000 - - - - - - - - - - - - - -
34000 - - - - - - - - - - - - - -
3C000 - - - - - - - - - - - - - -
3D000 - - - - - - - - - - - - - -
3F000 - - - - - - - - - - - - - -
40001 40002 40003 - - - - - - - - - - - -
42000 42S01 42S02 42S11 42S12 42S21 42S22 - - - - - - - -
44000 - - - - - - - - - - - - - -
HY000 HY001 HY003 HY004 HY007 HY008 HY009 HY010 HY011 HY012 HY013 HY014 HY015 HY016 HY017
HY018 HY019 HY020 HY021 HY024 HY090 HY091 HY092 HY095 HY096 HY097 HY098 HY099 - -
HY100 HY101 HY103 HY104 HY105 HY106 HY107 HY109 HY110 HY111 HYC00 HYT00 HYT01 - -
IM001 IM002 IM003 IM004 IM005 IM006 IM007 IM008 IM009 IM010 IM011 IM012 IM013 IM014 IM015

SQLSTATE 01

SQLSTATE Error Can be returned from
01000 General warning
01001 Cursor operation conflict
  • SQLExecDirect

    StatementText contained a positioned UPDATE or DELETE statement, and no rows or more than one row were updated or deleted. (For more information about updates to more than one row, refer to the description of SQL_ATTR_SIMULATE_CURSOR in SQLSetStmtAttr.)

    (Function returns SQL_SUCCESS_WITH_INFO)

  • SQLExecute

    The prepared statement associated with the StatementHandle contained a positioned UPDATE or DELETE statement, and no rows or more than one row were updated or deleted. (For more information about updates to more than one row, refer to the description of SQL_ATTR_SIMULATE_CURSOR in SQLSetStmtAttr.)

    (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLParamData
  • SQLSetPos

    The Operation argument was SQL_DELETE or SQL_UPDATE, and no rows or more than one row were deleted or updated. (For more information about updates to more than one row, see the description of the SQL_ATTR_SIMULATE_CURSOR Attribute in SQLSetStmtAttr.)

    (Function returns SQL_SUCCESS_WITH_INFO.)

    The Operation argument was SQL_DELETE or SQL_UPDATE, and the operation failed because of optimistic concurrency. (Function returns SQL_SUCCESS_WITH_INFO.)

01002 Disconnect error
  • SQLDisconnect

    An error occurred during the disconnect. However, the disconnect succeeded. (Function returns SQL_SUCCESS_WITH_INFO.)

01003 NULL value eliminated in set function
  • SQLExecDirect

    The argument StatementText contained a set function (such as AVG, MAX, MIN, and so on), but not the COUNT set function, and NULL argument values were eliminated before the function was applied. (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLExecute

    The prepared statement associated with StatementHandle contained a set function (such as AVG, MAX, MIN, and so on), but not the COUNT set function, and NULL argument values were eliminated before the function was applied. (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLParamData
01004 String data, right-truncated
  • SQLBrowseConnect

    The buffer *OutConnectionString was not large enough to return the entire browse result connection string, so the string was truncated. The buffer *StringLength2Ptr contains the length of the untruncated browse result connection string. (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLBulkOperations

    The Operation argument was SQL_FETCH_BY_BOOKMARK, and string or binary data returned for a column or columns with a data type of SQL_C_CHAR or SQL_C_BINARY resulted in the truncation of nonblank character or non-NULL binary data.

  • SQLColAttribute

    The buffer *CharacterAttributePtr was not large enough to return the entire string value, so the string value was truncated. The length of the untruncated string value is returned in *StringLengthPtr. (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLDataSources

    (Driver Manager.) The buffer *ServerName was not large enough to return the entire data source name, so the name was truncated. The length of the entire data source name is returned in *NameLength1Ptr. (Function returns SQL_SUCCESS_WITH_INFO.)

    (Driver Manager.) The buffer *Description was not large enough to return the entire ODBC driver description, so the description was truncated. The length of the untruncated data source description is returned in *NameLength2Ptr. (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLDescribeCol

    The buffer *ColumnName was not large enough to return the entire column name, so the column name was truncated. The length of the untruncated column name is returned in *NameLengthPtr. (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLDriverConnect

    The buffer *OutConnectionString was not large enough to return the entire connection string, so the connection string was truncated. The length of the untruncated connection string is returned in *StringLength2Ptr. (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLDrivers

    (Driver Manager.) The buffer *DriverDescription was not large enough to return the entire ODBC driver description, so the description was truncated. The length of the entire ODBC driver description is returned in *DescriptionLengthPtr. (Function returns SQL_SUCCESS_WITH_INFO.)

    (Driver Manager.) The buffer *DriverAttributes was not large enough to return the entire list of attribute value pairs, so the list was truncated. The length of the untruncated list of attribute value pairs is returned in *AttributesLengthPtr. (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLExecDirect

    String or binary data returned for an input/output or output parameter resulted in the truncation of nonblank character or non-NULL binary data. If it was a string value, it was right-truncated. (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLExecute

    String or binary data returned for an output parameter resulted in the truncation of nonblank character or non-NULL binary data. If it was a string value, it was right-truncated. (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLExtendedFetch

    String or binary data returned for a column resulted in the truncation of nonblank character or non-NULL binary data. If it was a string value, it was right-truncated. If it was a numeric value, the fractional part of the number was truncated.

    (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLFetch

    String or binary data returned for a column resulted in the truncation of nonblank character or non-NULL binary data. If it was a string value, it was right-truncated.

  • SQLFetchScroll

    String or binary data returned for a column resulted in the truncation of nonblank character or non-NULL binary data. String values are right-truncated.

  • SQLGetConnectAttr

    The data returned in *ValuePtr was truncated to be BufferLength minus the length of a null-termination character. The length of the untruncated string value is returned in *StringLengthPtr.

    (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLGetCursorName

    The buffer *CursorName was not large enough to return the entire cursor name, so the cursor name was truncated. The length of the untruncated cursor name is returned in *NameLengthPtr.

    (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLGetData

    Not all of the data for the specified column, ColumnNumber, could be retrieved in a single call to the function. The length of the data remaining in the specified column prior to the current call to SQLGetData is returned in *StrLen_or_IndPtr. (Function returns SQL_SUCCESS_WITH_INFO.)

    The TargetValuePtr argument was a null pointer, and more data was available to return. (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLGetDescField

    The buffer *ValuePtr was not large enough to return the entire descriptor field, so the field was truncated. The length of the untruncated descriptor field is returned in *StringLengthPtr. (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLGetDescRec

    The buffer *Name was not large enough to return the entire descriptor field, so the field was truncated. The length of the untruncated descriptor field is returned in *StringLengthPtr. (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLGetEnvAttr

    The data returned in *ValuePtr was truncated to be BufferLength minus the null-termination character. The length of the untruncated string value is returned in *StringLengthPtr. (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLGetInfo

    The buffer *InfoValuePtr was not large enough to return all of the requested information, so the information was truncated. The length of the requested information in its untruncated form is returned in *StringLengthPtr. (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLGetStmtAttr

    The data returned in *ValuePtr was truncated to be BufferLength minus the length of a null-termination character. The length of the untruncated string value is returned in *StringLengthPtr. (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLNativeSql

    The buffer *OutStatementText was not large enough to return the entire SQL string, so the SQL string was truncated. The length of the untruncated SQL string is returned in *TextLength2Ptr. (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLParamData
  • SQLPutData

    String or binary data returned for an output parameter resulted in the truncation of nonblank character or non-NULL binary data. If it was a string value, it was right-truncated. (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLSetCursorName

    The cursor name exceeded the maximum limit, so only the maximum allowable number of characters was used.

  • SQLSetPos

    The Operation argument was SQL_REFRESH, and string or binary data returned for a column or columns with a data type of SQL_C_CHAR or SQL_C_BINARY resulted in the truncation of nonblank character or non-NULL binary data.

01006 Privilege not revoked
  • SQLExecDirect

    *StatementText contained a REVOKE statement, and the user did not have the specified privilege. (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLExecute

    The prepared statement associated with the StatementHandle was a REVOKE statement, and the user did not have the specified privilege. (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLParamData
01007 Privilege not granted
  • SQLExecDirect

    *StatementText was a GRANT statement, and the user could not be granted the specified privilege.

  • SQLExecute

    The prepared statement associated with the StatementHandle was a GRANT statement, and the user could not be granted the specified privilege.

  • SQLParamData
01S00 Invalid connection string attribute
  • SQLBrowseConnect

    An invalid attribute keyword was specified in the browse request connection string (InConnectionString). (Function returns SQL_NEED_DATA.)

    An attribute keyword was specified in the browse request connection string (InConnectionString) that does not apply to the current connection level. (Function returns SQL_NEED_DATA.)

  • SQLDriverConnect

    An invalid attribute keyword was specified in the connection string (InConnectionString), but the ODBC driver was able to connect to the data source anyway. (Function returns SQL_SUCCESS_WITH_INFO.)

01S01 Error in row
  • SQLBulkOperations

    The Operation argument was SQL_ADD, and an error occurred in one or more rows while performing the operation but at least one row was successfully added. (Function returns SQL_SUCCESS_WITH_INFO.)

    (This error is raised only when an application is working with an ODBC 2.x driver.)

  • SQLExtendedFetch

    An error occurred while fetching one or more rows. (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLFetch

    An error occurred while fetching one or more rows.

    (If this SQLSTATE is returned when an ODBC 3.x application is working with an ODBC 2.x driver, it can be ignored.)

  • SQLFetchScroll

    An error occurred while fetching one or more rows.

    (This SQLSTATE is returned only by ODBC 2.x drivers.)

  • SQLSetPos

    The RowNumber argument was 0, and an error occurred in one or more rows while performing the operation specified with the Operation argument.

    (SQL_SUCCESS_WITH_INFO is returned if an error occurs on one or more, but not all, rows of a multi-row operation, and SQL_ERROR is returned if an error occurs on a single-row operation.)

    (This SQLSTATE is returned only when SQLSetPos is called after SQLExtendedFetch, if the ODBC driver is an ODBC 2.x ODBC driver and the cursor library is not used.)

01S02 Option value changed
  • SQLBrowseConnect

    The ODBC driver did not support the specified value of the ValuePtr argument in SQLSetConnectAttr and substituted a similar value.

    (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLConnect

    The ODBC driver did not support the specified value of the ValuePtr argument in SQLSetConnectAttr and substituted a similar value. (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLDriverConnect

    The ODBC driver did not support the specified value pointed to by the ValuePtr argument in SQLSetConnectAttr and substituted a similar value. (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLExecDirect, SQLExecute, SQLGetTypeInfo

    A specified statement attribute was invalid because of implementation working conditions, so a similar value was temporarily substituted. (SQLGetStmtAttr can be called to determine what the temporarily substituted value is.) The substitute value is valid for the StatementHandle until the cursor is closed, at which point the statement attribute reverts to its previous value. The statement attributes that can be changed are:

    SQL_ATTR_CONCURRENCY
    SQL_ATTR_CURSOR_TYPE
    SQL_ATTR_KEYSET_SIZE
    SQL_ATTR_MAX_LENGTH
    SQL_ATTR_MAX_ROWS
    SQL_ATTR_QUERY_TIMEOUT
    SQL_ATTR_SIMULATE_CURSOR

    Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLMoreResults

    The value of a statement attribute changed as the batch was being processed. (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLParamData
  • SQLPrepare

    A specified statement attribute was invalid because of implementation working conditions, so a similar value was temporarily substituted. (SQLGetStmtAttr can be called to determine what the temporarily substituted value is.) The substitute value is valid for the StatementHandle until the cursor is closed. The statement attributes that can be changed are:

    SQL_ATTR_CONCURRENCY
    SQL_ATTR_CURSOR_TYPE
    SQL_ATTR_KEYSET_SIZE
    SQL_ATTR_MAX_LENGTH
    SQL_ATTR_MAX_ROWS
    SQL_ATTR_QUERY_TIMEOUT
    SQL_ATTR_SIMULATE_CURSOR

    (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLSetConnectAttr

    The ODBC driver did not support the value specified in ValuePtr and substituted a similar value. (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLSetDescField

    The ODBC driver did not support the value specified in *ValuePtr (if ValuePtr was a pointer) or the value in ValuePtr (if ValuePtr was a 4-byte value), or *ValuePtr was invalid because of implementation working conditions, so the ODBC driver substituted a similar value. (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLSetEnvAttr

    The ODBC driver did not support the value specified in ValuePtr and substituted a similar value. (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLSetStmtAttr

    The ODBC driver did not support the value specified in ValuePtr, or the value specified in ValuePtr was invalid because of implementation working conditions, so the ODBC driver substituted a similar value. (SQLGetStmtAttr can be called to determine the temporarily substituted value.) The substitute value is valid for the StatementHandle until the cursor is closed, at which point the statement attribute reverts to its previous value. The statement attributes that can be changed are:

    SQL_ATTR_CONCURRENCY
    SQL_ATTR_CURSOR_TYPE
    SQL_ATTR_KEYSET_SIZE
    SQL_ATTR_MAX_LENGTH
    SQL_ATTR_MAX_ROWS
    SQL_ATTR_QUERY_TIMEOUT
    SQL_ATTR_ROW_ARRAY_SIZE
    SQL_ATTR_SIMULATE_CURSOR

    (Function returns SQL_SUCCESS_WITH_INFO.)

01S06 Attempt to fetch before the result set returned the first rowset
  • SQLExtendedFetch

    The requested rowset overlapped the start of the result set when the current position was beyond the first row, and either FetchOrientation was SQL_PRIOR or FetchOrientation was SQL_RELATIVE with a negative FetchOffset whose absolute value was less than or equal to the current SQL_ROWSET_SIZE. (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLFetchScroll

    The requested rowset overlapped the start of the result set when FetchOrientation was SQL_FETCH_PRIOR, the current position was beyond the first row, and the number of the current row is less than or equal to the rowset size.

    The requested rowset overlapped the start of the result set when FetchOrientation was SQL_FETCH_PRIOR, the current position was beyond the end of the result set, and the rowset size was greater than the result set size.

    The requested rowset overlapped the start of the result set when FetchOrientation was SQL_FETCH_RELATIVE, FetchOffset was negative, and the absolute value of FetchOffset was less than or equal to the rowset size.

    The requested rowset overlapped the start of the result set when FetchOrientation was SQL_FETCH_ABSOLUTE, FetchOffset was negative, and the absolute value of FetchOffset was greater than the result set size but less than or equal to the rowset size.

    (Function returns SQL_SUCCESS_WITH_INFO.)

01S07 Fractional truncation
  • SQLBulkOperations

    The Operation argument was SQL_FETCH_BY_BOOKMARK, the data type of the application buffer was not SQL_C_CHAR or SQL_C_BINARY, and the data returned to application buffers for one or more columns was truncated. (For numeric C data types, the fractional part of the number was truncated. For time, timestamp, and interval C data types containing a time component, the fractional portion of the time was truncated.)

    (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLExecDirect, SQLExecute

    The data returned for an input/output or output parameter was truncated such that the fractional part of a numeric data type was truncated or the fractional portion of the time component of a time, timestamp, or interval data type was truncated.

    (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLExtendedFetch, SQLFetch, SQLFetchScroll

    The data returned for a column was truncated. For numeric data types, the fractional part of the number was truncated. For time, timestamp, and interval data types containing a time component, the fractional portion of the time was truncated.

    (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLGetData

    The data returned for one or more columns was truncated. For numeric data types, the fractional part of the number was truncated. For time, timestamp, and interval data types containing a time component, the fractional portion of the time was truncated.

    (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLParamData
  • SQLSetPos

    The Operation argument was SQL_REFRESH, the data type of the application buffer was not SQL_C_CHAR or SQL_C_BINARY, and the data returned to application buffers for one or more columns was truncated. For numeric data types, the fractional part of the number was truncated. For time, timestamp, and interval data types containing a time component, the fractional portion of the time was truncated.

    (Function returns SQL_SUCCESS_WITH_INFO.)

01S08 Error saving File DSN
  • SQLDriverConnect

    The string in *InConnectionString contained a FILEDSN keyword, but the .dsn file was not saved. (Function returns SQL_SUCCESS_WITH_INFO.)

01S09 Invalid keyword
  • SQLDriverConnect

    (Driver Manager.) The string in *InConnectionString contained a SAVEFILE keyword but not an ODBC DRIVER or a FILEDSN keyword. (Function returns SQL_SUCCESS_WITH_INFO.)

SQLSTATE 07

SQLSTATE Error Can be returned from
07001 Wrong number of parameters
07002 COUNT field incorrect
  • SQLExecDirect, SQLExecute

    The number of parameters specified in SQLBindParameter was less than the number of parameters in the SQL statement contained in *StatementText.

    SQLBindParameter was called with ParameterValuePtr set to a null pointer, StrLen_or_IndPtr not set to SQL_NULL_DATA or SQL_DATA_AT_EXEC, and InputOutputType not set to SQL_PARAM_OUTPUT, so that the number of parameters specified in SQLBindParameter was greater than the number of parameters in the SQL statement contained in *StatementText.

  • SQLParamData
07005 Prepared statement not a cursor-specification
  • SQLColAttribute

    The statement associated with the StatementHandle did not return a result set and FieldIdentifier was not SQL_DESC_COUNT. There were no columns to describe.

  • SQLDescribeCol

    The statement associated with the StatementHandle did not return a result set. There were no columns to describe.

07006 Restricted data type attribute violation
  • SQLBindCol

    (Driver Manager.) The ColumnNumber argument was 0, and the TargetType argument was not SQL_C_BOOKMARK or SQL_C_VARBOOKMARK.

  • SQLBindParameter

    The data type identified by the ValueType argument cannot be converted to the data type identified by the ParameterType argument. Note that this error may be returned by SQLExecDirect, SQLExecute, or SQLPutData at execution time, instead of by SQLBindParameter.

  • SQLBulkOperations

    The Operation argument was SQL_FETCH_BY_BOOKMARK, and the data value of a column in the result set could not be converted to the data type specified by the TargetType argument in the call to SQLBindCol.

    The Operation argument was SQL_UPDATE_BY_BOOKMARK or SQL_ADD, and the data value in the application buffers could not be converted to the data type of a column in the result set.

  • SQLExecDirect, SQLExecute

    The data value identified by the ValueType argument in SQLBindParameter for the bound parameter could not be converted.

    The data value returned for a parameter bound as SQL_PARAM_INPUT_OUTPUT or SQL_PARAM_OUTPUT could not be converted to the data type identified by the ParameterType argument in SQLBindParameter.

    (If the data values for one or more rows could not be converted but one or more rows were successfully returned, this function returns SQL_SUCCESS_WITH_INFO.)

  • SQLExtendedFetch

    A data value could not be converted to the C data type specified by TargetType in SQLBindCol.

  • SQLFetch, SQLFetchScroll

    The data value of a column in the result set could not be converted to the data type specified by TargetType in SQLBindCol.

    Column 0 was bound with a data type of SQL_C_BOOKMARK, and the SQL_ATTR_USE_BOOKMARKS statement attribute was set to SQL_UB_VARIABLE.

    Column 0 was bound with a data type of SQL_C_VARBOOKMARK, and the SQL_ATTR_USE_BOOKMARKS statement attribute was not set to SQL_UB_VARIABLE.

  • SQLGetData

    The data value of a column in the result set cannot be converted to the C data type specified by the argument TargetType.

  • SQLParamData

    The data value identified by the ValueType argument in SQLBindParameter for the bound parameter could not be converted to the data type identified by the ParameterType argument in SQLBindParameter.

    The data value returned for a parameter bound as SQL_PARAM_INPUT_OUTPUT or SQL_PARAM_OUTPUT could not be converted to the data type identified by the ValueType argument in SQLBindParameter.

    (If the data values for one or more rows could not be converted, but one or more rows were successfully returned, this function returns SQL_SUCCESS_WITH_INFO.)

  • SQLPutData

    The data value identified by the ValueType argument in SQLBindParameter for the bound parameter could not be converted to the data type identified by the ParameterType argument in SQLBindParameter.

  • SQLSetPos

    The data value of a column in the result set could not be converted to the data type specified by TargetType in the call to SQLBindCol.

07009 Invalid descriptor index
  • SQLBindCol

    The value specified for the argument ColumnNumber exceeded the maximum number of columns in the result set.

  • SQLBindParameter

    (Driver Manager.) The value specified for the argument ParameterNumber was less than 1.

  • SQLBulkOperations

    The argument Operation was SQL_ADD, and a column was bound with a column number greater than the number of columns in the result set.

  • SQLColAttribute, SQLDescribeCol

    (Driver Manager.) The value specified for the argument ColumnNumber was equal to 0, and the SQL_ATTR_USE_BOOKMARKS statement option was SQL_UB_OFF.

    The value specified for the argument ColumnNumber was greater than the number of columns in the result set.

  • SQLDescribeParam

    (Driver Manager.) The value specified for the argument ParameterNumber is less than 1.

    The value specified for the argument ParameterNumber was greater than the number of parameters in the associated SQL statement.

    The parameter marker was part of a non-DML statement.

    The parameter marker was part of a SELECT list.

  • SQLExtendedFetch

    Column 0 was bound with SQLBindCol, and the SQL_ATTR_USE_BOOKMARKS statement attribute was set to SQL_UB_OFF.

  • SQLFetch

    The ODBC driver was an ODBC 2.x driver that does not support SQLExtendedFetch, and a column number specified in the binding for a column was 0.

    Column 0 was bound, and the SQL_ATTR_USE_BOOKMARKS statement attribute was set to SQL_UB_OFF.

  • SQLFetchScroll

    Column 0 was bound, and the SQL_ATTR_USE_BOOKMARKS statement attribute was set to SQL_UB_OFF.

  • SQLGetData

    The value specified for the argument ColumnNumber was 0, and the SQL_ATTR_USE_BOOKMARKS statement attribute was set to SQL_UB_OFF.

    The value specified for the argument ColumnNumber was greater than the number of columns in the result set.

    (Driver Manager.) The specified column was bound. This description does not apply to ODBC drivers that return the SQL_GD_BOUND bitmask for the SQL_GETDATA_EXTENSIONS option in SQLGetInfo.

    (Driver Manager.) The number of the specified column was less than or equal to the number of the highest bound column. This description does not apply to ODBC drivers that return the SQL_GD_ANY_COLUMN bitmask for the SQL_GETDATA_EXTENSIONS option in SQLGetInfo.

    (Driver Manager.) The application has already called SQLGetData for the current row; the number of the column specified in the current call was less than the number of the column specified in the preceding call; and the ODBC driver does not return the SQL_GD_ANY_ORDER bitmask for the SQL_GETDATA_EXTENSIONS option in SQLGetInfo.

    (Driver Manager.) The TargetType argument was SQL_ARD_TYPE, and the ColumnNumber descriptor record in the ARD failed the consistency check.

    (Driver Manager.) The TargetType argument was SQL_ARD_TYPE, and the value in the SQL_DESC_COUNT field of the ARD was less than the ColumnNumber argument.

  • SQLGetDescField

    (Driver Manager.) The RecNumber argument was equal to 0, the SQL_ATTR_USE_BOOKMARK statement attribute was SQL_UB_OFF, and the DescriptorHandle argument was an IRD handle. (This error can be returned for an explicitly allocated descriptor only if the descriptor is associated with a statement handle.)

    The FieldIdentifier argument was a record field, the RecNumber argument was 0, and the DescriptorHandle argument was an IPD handle.

    The RecNumber argument was less than 0.

  • SQLGetDescRec

    The FieldIdentifier argument was a record field, the RecNumber argument was set to 0, and the DescriptorHandle argument was an IPD handle.

    (Driver Manager.) The RecNumber argument was set to 0, and the SQL_ATTR_USE_BOOKMARKS statement attribute was set to SQL_UB_OFF, and the DescriptorHandle argument was an IRD handle.

    The RecNumber argument was less than 0.

  • SQLParamData
  • SQLSetDescField

    The FieldIdentifier argument was a record field, the RecNumber argument was 0, and the DescriptorHandle argument referred to an IPD handle.

    The RecNumber argument was less than 0, and the DescriptorHandle argument referred to an ARD or an APD.

    The RecNumber argument was greater than the maximum number of columns or parameters that the data source can support, and the DescriptorHandle argument referred to an APD or ARD.

    (Driver Manager.) The FieldIdentifier argument was SQL_DESC_COUNT, and *ValuePtr argument was less than 0.

    The RecNumber argument was equal to 0, and the DescriptorHandle argument referred to an implicitly allocated APD. (This error does not occur with an explicitly allocated application descriptor, because it is not known whether an explicitly allocated application descriptor is an APD or ARD until execute time.)

  • SQLSetDescRec

    The RecNumber argument was set to 0, and the DescriptorHandle referred to an IPD handle.

    The RecNumber argument was less than 0.

    The RecNumber argument was greater than the maximum number of columns or parameters that the data source can support, and the DescriptorHandle argument was an APD, IPD, or ARD.

    The RecNumber argument was equal to 0, and the DescriptorHandle argument referred to an implicitly allocated APD. (This error does not occur with an explicitly allocated application descriptor because it is not known whether an explicitly allocated application descriptor is an APD or ARD until execute time.)

  • SQLSetPos

    The argument Operation was SQL_REFRESH or SQL_UPDATE, and a column was bound with a column number greater than the number of columns in the result set.

07S01 Invalid use of default parameter

SQLSTATE 08

SQLSTATE Error Can be returned from
08001 Client unable to establish connection
08002 Connection name in use
  • SQLBrowseConnect

    (Driver Manager.) The specified connection had already been used to establish a connection with a data source, and the connection was open.

  • SQLConnect

    (Driver Manager.) The specified ConnectionHandle had already been used to establish a connection with a data source, and the connection was still open or the user was browsing for a connection.

  • SQLDriverConnect

    (Driver Manager.) The specified ConnectionHandle had already been used to establish a connection with a data source, and the connection was still open.

  • SQLSetConnectAttr

    The Attribute argument was SQL_ATTR_ODBC_CURSORS, and the ODBC driver was already connected to the data source.

08003 Connection does not exist
  • SQLAllocHandle

    (Driver Manager.) The HandleType argument was SQL_HANDLE_STMT or SQL_HANDLE_DESC, but the connection specified by the InputHandle argument was not open. The connection process must be completed successfully (and the connection must be open) for the ODBC driver to allocate a statement or descriptor handle.

  • SQLDisconnect

    (Driver Manager.) The connection specified in the argument ConnectionHandle was not open.

  • SQLEndTran

    (Driver Manager.) The HandleType was SQL_HANDLE_DBC, and the Handle was not in a connected state.

  • SQLGetConnectAttr

    (Driver Manager.) An Attribute value that required an open connection was specified.

  • SQLGetInfo

    (Driver Manager.) The type of information requested in InfoType requires an open connection. Of the information types reserved by ODBC, only SQL_ODBC_VER can be returned without an open connection.

  • SQLNativeSql

    The ConnectionHandle was not in a connected state.

  • SQLSetConnectAttr

    (Driver Manager.) An Attribute value was specified that required an open connection, but the ConnectionHandle was not in a connected state.

08004 Server rejected the connection
08007 Connection failure during transaction
  • SQLEndTran

    The HandleType was SQL_HANDLE_DBC, and the connection associated with the Handle failed during the execution of the function, and it cannot be determined whether the requested COMMIT or ROLLBACK occurred before the failure.

08S01 Communication link failure

SQLSTATE 21

SQLSTATE Error Can be returned from
21S01 Insert value list does not match column list
  • SQLDescribeParam

    The number of parameters in the INSERT statement did not match the number of columns in the table named in the statement.

  • SQLExecDirect, SQLPrepare

    *StatementText contained an INSERT statement, and the number of values to be inserted did not match the degree of the derived table.

21S02 Degree of derived table does not match column list
  • SQLBulkOperations

    The argument Operation was SQL_UPDATE_BY_BOOKMARK; and no columns were updateable because all columns were either unbound or read-only, or the value in the bound length/indicator buffer was SQL_COLUMN_IGNORE.

  • SQLExecDirect

    *StatementText contained a CREATE VIEW statement, and the unqualified column list (the number of columns specified for the view in the column-identifier arguments of the SQL statement) contained more names than the number of columns in the derived table defined by the query-specification argument of the SQL statement.

  • SQLExecute

    The prepared statement associated with the StatementHandle contained a CREATE VIEW statement, and the unqualified column list (the number of columns specified for the view in the column-identifier arguments of the SQL statement) contained more names than the number of columns in the derived table defined by the query-specification argument of the SQL statement.

  • SQLParamData
  • SQLPrepare

    *StatementText contained a CREATE VIEW statement, and the number of names specified is not the same degree as the derived table defined by the query specification.

  • SQLSetPos

    The argument Operation was SQL_UPDATE, and no columns were updateable because all columns were either unbound, read-only, or the value in the bound length/indicator buffer was SQL_COLUMN_IGNORE.

SQLSTATE 22

SQLSTATE Error Can be returned from
22001 String data, right-truncated
  • SQLBulkOperations

    The assignment of a character or binary value to a column in the result set resulted in the truncation of nonblank (for characters) or non-null (for binary) characters or bytes.

  • SQLExecDirect

    The assignment of a character or binary value to a column resulted in the truncation of nonblank character data or non-null binary data.

  • SQLExecute

    The assignment of a character or binary value to a column resulted in the truncation of nonblank (character) or non-null (binary) characters or bytes.

  • SQLFetch

    A variable-length bookmark returned for a column was truncated.

  • SQLFetchScroll

    A variable-length bookmark returned for a row was truncated.

  • SQLParamData
  • SQLPutData

    The assignment of a character or binary value to a column resulted in the truncation of nonblank (character) or non-null (binary) characters or bytes.

    The SQL_NEED_LONG_DATA_LEN information type in SQLGetInfo was "Y", and more data was sent for a long parameter (the data type was SQL_LONGVARCHAR, SQL_LONGVARBINARY, or a long data source-specific data type) than was specified with the StrLen_or_IndPtr argument in SQLBindParameter.

    The SQL_NEED_LONG_DATA_LEN information type in SQLGetInfo was "Y", and more data was sent for a long column (the data type was SQL_LONGVARCHAR, SQL_LONGVARBINARY, or a long data source-specific data type) than was specified in the length buffer corresponding to a column in a row of data that was added or updated with SQLBulkOperations or updated with SQLSetPos.

  • SQLSetDescField

    The FieldIdentifier argument was SQL_DESC_NAME, and the BufferLength argument was a value larger than SQL_MAX_IDENTIFIER_LEN.

  • SQLSetPos

    The Operation argument was SQL_UPDATE, and the assignment of a character or binary value to a column resulted in the truncation of nonblank (for characters) or non-null (for binary) characters or bytes.

22002 Indicator variable required but not supplied
22003 Numeric value out of range
  • SQLBulkOperations

    The Operation argument was SQL_ADD or SQL_UPDATE_BY_BOOKMARK, and the assignment of a numeric value to a column in the result set caused the whole (as opposed to fractional) part of the number to be truncated.

    The argument Operation was SQL_FETCH_BY_BOOKMARK, and returning the numeric value for one or more bound columns would have caused a loss of significant digits.

  • SQLExecDirect

    *StatementText contained an SQL statement that contained a bound numeric parameter or literal, and the value caused the whole (as opposed to fractional) part of the number to be truncated when assigned to the associated table column.

    Returning a numeric value (as numeric or string) for one or more input/output or output parameters would have caused the whole (as opposed to fractional) part of the number to be truncated.

  • SQLExecute

    The prepared statement associated with the StatementHandle contained a bound numeric parameter, and the parameter value caused the whole (as opposed to fractional) part of the number to be truncated when assigned to the associated table column.

    Returning a numeric value (as numeric or string) for one or more input/output or output parameters would have caused the whole (as opposed to fractional) part of the number to be truncated.

  • SQLExtendedFetch

    Returning the numeric value (as numeric or string) for one or more columns would have caused the whole (as opposed to fractional) part of the number to be truncated.

    (Function returns SQL_SUCCESS_WITH_INFO.)

    For more information, refer to Guidelines for Interval and Numeric Data Types.

  • SQLFetch

    Returning the numeric value (as numeric or string) for one or more bound columns would have caused the whole (as opposed to fractional) part of the number to be truncated.

    For more information, refer to Converting Data from SQL to C Data Types.

  • SQLFetchScroll

    Returning the numeric value (as numeric or string) for one or more bound columns would have caused the whole (as opposed to fractional) part of the number to be truncated.

    For more information, refer to Guidelines for Interval and Numeric Data Types.

  • SQLGetData

    Returning the numeric value (as numeric or string) for the column would have caused the whole (as opposed to fractional) part of the number to be truncated.

    For more information, refer to Appendix D: Data Types.

  • SQLGetInfo
  • SQLParamData
  • SQLPutData

    The data sent for a bound numeric parameter or column caused the whole (as opposed to fractional) part of the number to be truncated when assigned to the associated table column.

    Returning a numeric value (as numeric or string) for one or more input/output or output parameters would have caused the whole (as opposed to fractional) part of the number to be truncated.

  • SQLSetPos

    The argument Operation was SQL_UPDATE, and the assignment of a numeric value to a column in the result set caused the whole (as opposed to fractional) part of the number to be truncated.

    The argument Operation was SQL_REFRESH, and returning the numeric value for one or more bound columns would have caused a loss of significant digits.

22007 Invalid datetime format
  • SQLBulkOperations

    The Operation argument was SQL_ADD or SQL_UPDATE_BY_BOOKMARK, and the assignment of a date or timestamp value to a column in the result set caused the year, month, or day field to be out of range.

    The argument Operation was SQL_FETCH_BY_BOOKMARK, and returning the date or timestamp value for one or more bound columns would have caused the year, month, or day field to be out of range.

  • SQLExecDirect

    *StatementText contained an SQL statement that contained a date, time, or timestamp structure as a bound parameter, and the parameter was, respectively, an invalid date, time, or timestamp.

    An input/output or output parameter was bound to a date, time, or timestamp C structure, and a value in the returned parameter was, respectively, an invalid date, time, or timestamp. (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLExecute

    The prepared statement associated with the StatementHandle contained an SQL statement that contained a date, time, or timestamp structure as a bound parameter, and the parameter was, respectively, an invalid date, time, or timestamp.

    An input/output or output parameter was bound to a date, time, or timestamp C structure, and a value in the returned parameter was, respectively, an invalid date, time, or timestamp. (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLExtendedFetch

    A character column in the result set was bound to a date, time, or timestamp C structure, and a value in the column was, respectively, an invalid date, time, or timestamp.

    (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLFetch, SQLFetchScroll

    A character column in the result set was bound to a date, time, or timestamp C structure, and a value in the column was, respectively, an invalid date, time, or timestamp.

    A character column in the result set was bound to a date, time, or timestamp C structure, and a value in the column was, respectively, an invalid date, time, or timestamp.

  • SQLGetData

    The character column in the result set was bound to a C date, time, or timestamp structure, and the value in the column was an invalid date, time, or timestamp, respectively. For more information, refer to Appendix D: Data Types .

  • SQLNativeSql

    *InStatementText contained an escape clause with an invalid date, time, or timestamp value.

  • SQLParamData
  • SQLPutData

    The data sent for a parameter or column that was bound to a date, time, or timestamp structure was, respectively, an invalid date, time, or timestamp.

    An input/output or output parameter was bound to a date, time, or timestamp C structure, and a value in the returned parameter was, respectively, an invalid date, time, or timestamp. (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLSetPos

    The argument Operation was SQL_UPDATE, and the assignment of a date or timestamp value to a column in the result set caused the year, month, or day field to be out of range.

    The argument Operation was SQL_REFRESH, and returning the date or timestamp value for one or more bound columns would have caused the year, month, or day field to be out of range.

22008 Datetime field overflow
  • SQLBulkOperations

    The Operation argument was SQL_ADD or SQL_UPDATE_BY_BOOKMARK, and the performance of datetime arithmetic on data being sent to a column in the result set resulted in a datetime field (the year, month, day, hour, minute, or second field) of the result falling outside the permissible range of values for the field or being invalid based on the Gregorian calendar's natural rules for datetimes.

    The Operation argument was SQL_FETCH_BY_BOOKMARK, and the performance of datetime arithmetic on data being retrieved from the result set resulted in a datetime field (the year, month, day, hour, minute, or second field) of the result falling outside the permissible range of values for the field or being invalid based on the Gregorian calendar's natural rules for datetimes.

  • SQLExecDirect

    *StatementText contained an SQL statement that contained a datetime expression that, when computed, resulted in a date, time, or timestamp structure that was invalid.

    A datetime expression computed for an input/output or output parameter resulted in a date, time, or timestamp C structure that was invalid.

  • SQLExecute

    The prepared statement associated with the StatementHandle contained an SQL statement that contained a datetime expression that, when computed, resulted in a date, time, or timestamp structure that was invalid.

    A datetime expression computed for an input/output or output parameter resulted in a date, time, or timestamp C structure that was invalid.

  • SQLParamData
  • SQLPutData

    A datetime expression computed for an input/output or output parameter resulted in a date, time, or timestamp C structure that was invalid.

  • SQLSetPos

    The Operation argument was SQL_UPDATE, and the performance of datetime arithmetic on data being sent to a column in the result set resulted in a datetime field (the year, month, day, hour, minute, or second field) of the result being outside the permissible range of values for the field, or being invalid based on the Gregorian calendar's natural rules for datetimes.

    The Operation argument was SQL_REFRESH, and the performance of datetime arithmetic on data being retrieved from the result set resulted in a datetime field (the year, month, day, hour, minute, or second field) of the result being outside the permissible range of values for the field, or being invalid based on the Gregorian calendar's natural rules for datetimes.

22012 Division by zero
  • SQLExecDirect

    *StatementText contained an SQL statement that contained an arithmetic expression that caused division by zero.

    An arithmetic expression calculated for an input/output or output parameter resulted in division by zero.

  • SQLExecute

    The prepared statement associated with the StatementHandle contained an arithmetic expression that caused division by zero.

    An arithmetic expression calculated for an input/output or output parameter resulted in division by zero.

  • SQLExtendedFetch

    A value from an arithmetic expression was returned, which resulted in division by zero.

    (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLFetch, SQLFetchScroll

    A value from an arithmetic expression was returned, which resulted in division by zero.

  • SQLGetData

    A value from an arithmetic expression that resulted in division by zero was returned.

  • SQLParamData
  • SQLPutData

    An arithmetic expression calculated for an input/output or output parameter resulted in division by zero.

22015 Interval field overflow
  • SQLBulkOperations

    The Operation argument was SQL_ADD or SQL_UPDATE_BY_BOOKMARK, and the assignment of an exact numeric or interval C type to an interval SQL data type caused a loss of significant digits.

    The Operation argument was SQL_ADD or SQL_UPDATE_BY_BOOKMARK; when assigning to an interval SQL type, there was no representation of the value of the C type in the interval SQL type.

    The Operation argument was SQL_FETCH_BY_BOOKMARK, and assigning from an exact numeric or interval SQL type to an interval C type caused a loss of significant digits in the leading field.

    The Operation argument was SQL_FETCH_BY_BOOKMARK; when assigning to an interval C type, there was no representation of the value of the SQL type in the interval C type.

  • SQLExecDirect, SQLExecute

    *StatementText contained an exact numeric or interval parameter that, when converted to an interval SQL data type, caused a loss of significant digits.

    *StatementText contained an interval parameter with more than one field that, when converted to a numeric data type in a column, had no representation in the numeric data type.

    *StatementText contained parameter data that was assigned to an interval SQL type, and there was no representation of the value of the C type in the interval SQL type.

    Assigning an input/output or output parameter that was an exact numeric or interval SQL type to an interval C type caused a loss of significant digits.

    When an input/output or output parameter was assigned to an interval C structure, there was no representation of the data in the interval data structure.

  • SQLExtendedFetch

    Assigning from an exact numeric or interval SQL type to an interval C type caused a loss of significant digits in the leading field.

    When fetching data to an interval C type, there was no representation of the value of the SQL type in the interval C type.

    (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLFetch, SQLFetchScroll, SQLGetData

    Assigning from an exact numeric or interval SQL type to an interval C type caused a loss of significant digits in the leading field.

    When fetching data to an interval C type, there was no representation of the value of the SQL type in the interval C type.

  • SQLParamData
  • SQLPutData

    The data sent for an exact numeric or interval column or parameter to an interval SQL data type caused a loss of significant digits.

    Data was sent for an interval column or parameter with more than one field, was converted to a numeric data type, and had no representation in the numeric data type.

    The data sent for column or parameter data was assigned to an interval SQL type, and there was no representation of the value of the C type in the interval SQL type.

    The data sent for an exact numeric or interval C column or parameter to an interval C type caused a loss of significant digits.

    The data sent for column or parameter data was assigned to an interval C structure, and there was no representation of the data in the interval data structure.

  • SQLSetPos

    The Operation argument was SQL_UPDATE, and the assignment of an exact numeric or interval C type to an interval SQL data type caused a loss of significant digits.

    The Operation argument was SQL_UPDATE; when assigning to an interval SQL type, there was no representation of the value of the C type in the interval SQL type.

    The Operation argument was SQL_REFRESH, and assigning from an exact numeric or interval SQL type to an interval C type caused a loss of significant digits in the leading field.

    The Operation argument was SQL_REFRESH; when assigning to an interval C type, there was no representation of the value of the SQL type in the interval C type.

22018 Invalid character value for cast specification
  • SQLBulkOperations

    The Operation argument was SQL_FETCH_BY_BOOKMARK; the C type was an exact or approximate numeric, a datetime, or an interval data type; the SQL type of the column was a character data type; and the value in the column was not a valid literal of the bound C type.

    The argument Operation was SQL_ADD or SQL_UPDATE_BY_BOOKMARK; the SQL type was an exact or approximate numeric, a datetime, or an interval data type; the C type was SQL_C_CHAR; and the value in the column was not a valid literal of the bound SQL type.

  • SQLExecDirect, SQLExecute

    *StatementText contained a C type that was an exact or approximate numeric, a datetime, or an interval data type; the SQL type of the column was a character data type; and the value in the column was not a valid literal of the bound C type.

    When an input/output or output parameter was returned, the SQL type was an exact or approximate numeric, a datetime, or an interval data type; the C type was SQL_C_CHAR; and the value in the column was not a valid literal of the bound SQL type.

  • SQLExtendedFetch

    The C type was an exact or approximate numeric, a datetime, or an interval data type; the SQL type of the column was a character data type; and the value in the column was not a valid literal of the bound C type.

    (Function returns SQL_SUCCESS_WITH_INFO.)

  • SQLFetch, SQLFetchScroll, SQLGetData

    A character column in the result set was bound to a character C buffer, and the column contained a character for which there was no representation in the character set of the buffer.

    The C type was an exact or approximate numeric, a datetime, or an interval data type; the SQL type of the column was a character data type; and the value in the column was not a valid literal of the bound C type.

  • SQLParamData
  • SQLPrepare

    *StatementText contained an SQL statement that contained a literal or parameter, and the value was incompatible with the data type of the associated table column.

  • SQLPutData

    The C type was an exact or approximate numeric, a datetime, or an interval data type; the SQL type of the column was a character data type; and the value in the column or parameter was not a valid literal of the bound C type.

    The SQL type was an exact or approximate numeric, a datetime, or an interval data type; the C type was SQL_C_CHAR; and the value in the column or parameter was not a valid literal of the bound SQL type.

  • SQLSetPos

    The Operation argument was SQL_REFRESH; the C type was an exact or approximate numeric, a datetime, or an interval data type; the SQL type of the column was a character data type; and the value in the column was not a valid literal of the bound C type.

    The argument Operation was SQL_UPDATE; the SQL type was an exact or approximate numeric, a datetime, or an interval data type; the C type was SQL_C_CHAR; and the value in the column was not a valid literal

22019 Invalid escape character
  • SQLExecDirect

    *StatementText contained an SQL statement that contained a LIKE predicate with an ESCAPE in the WHERE clause, and the length of the escape character following ESCAPE was not equal to 1.

  • SQLExecute

    The prepared statement associated with StatementHandle contained a LIKE predicate with an ESCAPE in the WHERE clause, and the length of the escape character following ESCAPE was not equal to 1.

  • SQLPrepare

    The argument StatementText contained a LIKE predicate with an ESCAPE in the WHERE clause, and the length of the escape character following ESCAPE was not equal to 1.

22025 Invalid escape sequence
  • SQLExecDirect

    *StatementText contained an SQL statement that contained LIKE pattern value ESCAPE escape character in the WHERE clause, and the character following the escape character in the pattern value was not one of "%" or "_".

  • SQLExecute

    The prepared statement associated with StatementHandle contained LIKE pattern value ESCAPE escape character in the WHERE clause, and the character following the escape character in the pattern value was not one of "%" or "_".

  • SQLPrepare

    The argument StatementText contained LIKEpattern value ESCAPE escape character in the WHERE clause, and the character following the escape character in the pattern value was neither "%" nor "_".

22026 String data, length mismatch
  • SQLParamData

    The SQL_NEED_LONG_DATA_LEN information type in SQLGetInfo was "Y", and less data was sent for a long parameter (the data type was SQL_LONGVARCHAR, SQL_LONGVARBINARY, or a long data source-specific data type) than was specified with the StrLen_or_IndPtr argument in SQLBindParameter.

    The SQL_NEED_LONG_DATA_LEN information type in SQLGetInfo was "Y", and less data was sent for a long column (the data type was SQL_LONGVARCHAR, SQL_LONGVARBINARY, or a long data source-specific data type) than was specified in the length buffer corresponding to a column in a row of data that was added or updated with SQLBulkOperations or updated with SQLSetPos.

SQLSTATE 23

SQLSTATE Error Can be returned from
23000 Integrity constraint violation
  • SQLBulkOperations

    The Operation argument was SQL_ADD, SQL_DELETE_BY_BOOKMARK, or SQL_UPDATE_BY_BOOKMARK, and an integrity constraint was violated.

    The Operation argument was SQL_ADD, and a column that was not bound is defined as NOT NULL and has no default.

    The Operation argument was SQL_ADD, the length specified in the bound StrLen_or_IndPtr buffer was SQL_COLUMN_IGNORE, and the column did not have a default value.

  • SQLExecDirect

    *StatementText contained an SQL statement that contained a parameter or literal. The parameter value was NULL for a column defined as NOT NULL in the associated table column, a duplicate value was supplied for a column constrained to contain only unique values, or some other integrity constraint was violated.

  • SQLExecute

    The prepared statement associated with the StatementHandle contained a parameter. The parameter value was NULL for a column defined as NOT NULL in the associated table column, a duplicate value was supplied for a column constrained to contain only unique values, or some other integrity constraint was violated.

  • SQLParamData
  • SQLSetPos

    The argument Operation was SQL_DELETE or SQL_UPDATE, and an integrity constraint was violated.

SQLSTATE 24

SQLSTATE Error Can be returned from
24000 Invalid cursor state
  • SQLBulkOperations

    The StatementHandle was in an executed state, but no result set was associated with the StatementHandle.

  • SQLCloseCursor

    No cursor was open on the StatementHandle. (This is returned only by an ODBC 3.x driver.)

  • SQLColumnPrivileges, SQLColumns, SQLForeignKeys

    A cursor was open on the StatementHandle, and SQLFetch or SQLFetchScroll had been called. This error is returned by the Driver Manager if SQLFetch or SQLFetchScroll has not returned SQL_NO_DATA, and is returned by the ODBC driver if SQLFetch or SQLFetchScroll has returned SQL_NO_DATA.

    A cursor was open on the StatementHandle, but SQLFetch or SQLFetchScroll had not been called.

  • SQLExecDirect

    A cursor was positioned on the StatementHandle by SQLFetch or SQLFetchScroll This error is returned by the Driver Manager if SQLFetch or SQLFetchScroll has not returned SQL_NO_DATA, and is returned by the ODBC driver if SQLFetch or SQLFetchScroll has returned SQL_NO_DATA.

    A cursor was open but not positioned on the StatementHandle.

    *StatementText contained a positioned update or delete statement, and the cursor was positioned before the start of the result set or after the end of the result set.

  • SQLExecute

    A cursor was positioned on the StatementHandle by SQLFetch or SQLFetchScroll. This error is returned by the Driver Manager if SQLFetch or SQLFetchScroll has not returned SQL_NO_DATA, and is returned by the ODBC driver if SQLFetch or SQLFetchScroll has returned SQL_NO_DATA.

    A cursor was open on the StatementHandle.

    The prepared statement associated with the StatementHandle contained a positioned update or delete statement and the cursor was positioned before the start of the result set or after the end of the result set.

  • SQLExtendedFetch, SQLFetch, SQLFetchScroll

    The StatementHandle was in an executed state, but no result set was associated with the StatementHandle.

  • SQLGetData

    (Driver Manager.) The function was called without first calling SQLFetch or SQLFetchScroll to position the cursor on the row of data required.

    (Driver Manager.) The StatementHandle was in an executed state, but no result set was associated with the StatementHandle.

    A cursor was open on the StatementHandle and SQLFetch or SQLFetchScroll had been called, but the cursor was positioned before the start of the result set or after the end of the result set.

  • SQLGetStmtAttr

    The argument Attribute was SQL_ATTR_ROW_NUMBER and the cursor was not open, or the cursor was positioned before the start of the result set or after the end of the result set.

  • SQLGetTypeInfo, SQLProcedureColumns, SQLProcedures, SQLSpecialColumns, SQLStatistics, SQLTablePrivileges, SQLTables

    A cursor was open on the StatementHandle, and SQLFetch or SQLFetchScroll had been called. This error is returned by the Driver Manager if SQLFetch or SQLFetchScroll has not returned SQL_NO_DATA, and is returned by the ODBC driver if SQLFetch or SQLFetchScroll has returned SQL_NO_DATA.

    A result set was open on the StatementHandle, but SQLFetch or SQLFetchScroll had not been called.

  • SQLNativeSql

    The cursor referred to in the statement was positioned before the start of the result set or after the end of the result set. This error may not be returned by a ODBC driver having a native DBMS cursor implementation.

  • SQLPrepare, SQLPrimaryKeys

    (Driver Manager.) A cursor was open on the StatementHandle, and SQLFetch or SQLFetchScroll had been called.

    A cursor was open on the StatementHandle, but SQLFetch or SQLFetchScroll had not been called.

  • SQLSetConnectAttr

    The Attribute argument was SQL_ATTR_CURRENT_CATALOG, and a result set was pending.

  • SQLSetCursorName

    The statement corresponding to StatementHandle was already in an executed or cursor-positioned state.

  • SQLSetPos

    The StatementHandle was in an executed state, but no result set was associated with the StatementHandle.

    (Driver Manager.) A cursor was open on the StatementHandle, but SQLFetch or SQLFetchScroll had not been called.

    A cursor was open on the StatementHandle, and SQLFetch or SQLFetchScroll had been called, but the cursor was positioned before the start of the result set or after the end of the result set.

    The argument Operation was SQL_DELETE, SQL_REFRESH, or SQL_UPDATE, and the cursor was positioned before the start of the result set or after the end of the result set.

  • SQLSetStmtAttr

    The Attribute was SQL_ATTR_CONCURRENCY, SQL_ATTR_CURSOR_TYPE, SQL_ATTR_SIMULATE_CURSOR, or SQL_ATTR_USE_BOOKMARKS, and the cursor was open.

SQLSTATE 25

SQLSTATE Error Can be returned from
25000 Invalid transaction state
  • SQLDisconnect

    There was a transaction in process on the connection specified by the argument ConnectionHandle. The transaction remains active.

25S01 Transaction state
  • SQLEndTran

    One or more of the connections in Handle failed to complete the transaction with the outcome specified, and the outcome is unknown.

25S02 Transaction is still active
  • SQLEndTran

    The ODBC driver was not able to guarantee that all work in the global transaction could be completed atomically, and the transaction is still active.

25S03 Transaction is rolled back
  • SQLEndTran

    The ODBC driver was not able to guarantee that all work in the global transaction could be completed atomically, and all work in the transaction active in Handle was rolled back.

SQLSTATE 28

SQLSTATE Error Can be returned from
28000 Invalid authorization specification
  • SQLBrowseConnect

    Either the user identifier or the authorization string or both, as specified in the browse request connection string (InConnectionString), violated restrictions defined by the data source.

  • SQLConnect

    The value specified for the argument UserName or the value specified for the argument Authentication violated restrictions defined by the data source.

  • SQLDriverConnect

    Either the user identifier or the authorization string, or both, as specified in the connection string (InConnectionString), violated restrictions defined by the data source.

SQLSTATE 34

SQLSTATE Error Can be returned from
34000 Invalid cursor name
  • SQLExecDirect

    *StatementText contained a positioned update or delete statement, and the cursor referenced by the statement being executed was not open.

  • SQLPrepare

    *StatementText contained a positioned DELETE or a positioned UPDATE, and the cursor referenced by the statement being prepared was not open.

  • SQLSetCursorName

    The cursor name specified in *CursorName was invalid because it exceeded the maximum length as defined by the ODBC driver, or it started with "SQLCUR" or "SQL_CUR."

SQLSTATE 3C

SQLSTATE Error Can be returned from
3C000 Duplicate cursor name

SQLSTATE 3D

SQLSTATE Error Can be returned from
3D000 Invalid catalog name

SQLSTATE 3F

SQLSTATE Error Can be returned from
3F000 Invalid schema name

SQLSTATE 40

SQLSTATE Error Can be returned from
40001 Serialization failure
40002 Integrity constraint violation
  • SQLEndTran

    The CompletionType was SQL_COMMIT, and the commitment of changes caused integrity constraint violation. As a result, the transaction was rolled back.

40003 Statement completion unknown

SQLSTATE 42

SQLSTATE Error Can be returned from
42000 Syntax error or access violation
  • SQLBulkOperations

    The ODBC driver was unable to lock the row as needed to perform the operation requested in the Operation argument.

  • SQLExecDirect

    *StatementText contained an SQL statement that was not preparable or contained a syntax error.

    The user did not have permission to execute the SQL statement contained in *StatementText.

  • SQLExecute

    The user did not have permission to execute the prepared statement associated with the StatementHandle.

  • SQLParamData
  • SQLPrepare

    *StatementText contained an SQL statement that was not preparable or contained a syntax error.

    *StatementText contained a statement for which the user did not have the required privileges.

  • SQLSetPos

    The ODBC driver was unable to lock the row as needed to perform the operation requested in the argument Operation.

    The ODBC driver was unable to lock the row as requested in the argument LockType.

42S01 Base table or view already exists
  • SQLExecDirect, SQLPrepare

    *StatementText contained a CREATE TABLE or CREATE VIEW statement, and the table name or view name specified already exists.

42S02 Base table or view not found
  • SQLExecDirect

    *StatementText contained a DROP TABLE or a DROP VIEW statement, and the specified table name or view name did not exist.

    *StatementText contained an ALTER TABLE statement, and the specified table name did not exist.

    *StatementText contained a CREATE VIEW statement, and a table name or view name defined by the query specification did not exist.

    *StatementText contained a CREATE INDEX statement, and the specified table name did not exist.

    *StatementText contained a GRANT or REVOKE statement, and the specified table name or view name did not exist.

    *StatementText contained a SELECT statement, and a specified table name or view name did not exist.

    *StatementText contained a DELETE, INSERT, or UPDATE statement, and the specified table name did not exist.

    *StatementText contained a CREATE TABLE statement, and a table specified in a constraint (referencing a table other than the one being created) did not exist.

    *StatementText contained a CREATE SCHEMA statement, and a specified table name or view name did not exist.

  • SQLPrepare

    *StatementText contained a DROP TABLE or a DROP VIEW statement, and the specified table name or view name did not exist.

    *StatementText contained an ALTER TABLE statement, and the specified table name did not exist.

    *StatementText contained a CREATE VIEW statement, and a table name or view name defined by the query specification did not exist.

    *StatementText contained a CREATE INDEX statement, and the specified table name did not exist.

    *StatementText contained a GRANT or REVOKE statement, and the specified table name or view name did not exist.

    *StatementText contained a SELECT statement, and a specified table name or view name did not exist.

    *StatementText contained a DELETE, INSERT, or UPDATE statement, and the specified table name did not exist.

    *StatementText contained a CREATE TABLE statement, and a table specified in a constraint (referencing a table other than the one being created) did not exist.

42S11 Index already exists
  • SQLExecDirect

    *StatementText contained a CREATE INDEX statement, and the specified index name already existed.

    *StatementText contained a CREATE SCHEMA statement, and the specified index name already existed.

  • SQLPrepare

    *StatementText contained a CREATE INDEX statement, and the specified index name already existed.

42S12 Index not found
  • SQLExecDirect, SQLPrepare

    *StatementText contained a DROP INDEX statement, and the specified index name did not exist.

42S21 Column already exists
  • SQLExecDirect

    *StatementText contained an ALTER TABLE statement, and the column specified in the ADD clause is not unique or identifies an existing column in the base table.

  • SQLPrepare

    *StatementText contained an ALTER TABLE statement, and the column specified in the ADD clause is not unique or identifies an existing column in the base table.

42S22 Column not found
  • SQLExecDirect

    *StatementText contained a CREATE INDEX statement, and one or more of the column names specified in the column list did not exist.

    *StatementText contained a GRANT or REVOKE statement, and a specified column name did not exist.

    *StatementText contained a SELECT, DELETE, INSERT, or UPDATE statement, and a specified column name did not exist.

    *StatementText contained a CREATE TABLE statement, and a column specified in a constraint (referencing a table other than the one being created) did not exist.

    *StatementText contained a CREATE SCHEMA statement, and a specified column name did not exist.

  • SQLPrepare

    *StatementText contained a CREATE INDEX statement, and one or more of the column names specified in the column list did not exist.

    *StatementText contained a GRANT or REVOKE statement, and a specified column name did not exist.

    *StatementText contained a SELECT, DELETE, INSERT, or UPDATE statement, and a specified column name did not exist.

    *StatementText contained a CREATE TABLE statement, and a column specified in a constraint (referencing a table other than the one being created) did not exist.

SQLSTATE 44

SQLSTATE Error Can be returned from
44000 WITH CHECK OPTION violation
  • SQLBulkOperations

    The Operation argument was SQL_ADD or SQL_UPDATE_BY_BOOKMARK, and the insert or update was performed on a viewed table (or a table derived from the viewed table) that was created by specifying WITH CHECK OPTION, such that one or more rows affected by the insert or update will no longer be present in the viewed table.

  • SQLExecDirect

    The argument StatementText contained an INSERT statement performed on a viewed table or a table derived from the viewed table that was created by specifying WITH CHECK OPTION, such that one or more rows affected by the INSERT statement will no longer be present in the viewed table.

    The argument StatementText contained an UPDATE statement performed on a viewed table or a table derived from the viewed table that was created by specifying WITH CHECK OPTION, such that one or more rows affected by the UPDATE statement will no longer be present in the viewed table.

  • SQLExecute

    The prepared statement associated with StatementHandle contained an INSERT statement performed on a viewed table or a table derived from the viewed table that was created by specifying WITH CHECK OPTION, such that one or more rows affected by the INSERT statement will no longer be present in the viewed table.

    The prepared statement associated with the StatementHandle contained an UPDATE statement performed on a viewed table or a table derived from the viewed table that was created by specifying WITH CHECK OPTION, such that one or more rows affected by the UPDATE statement will no longer be present in the viewed table.

  • SQLParamData
  • SQLSetPos

    The Operation argument was SQL_UPDATE, and the update was performed on a viewed table or a table derived from the viewed table which was created by specifying WITH CHECK OPTION, such that one or more rows affected by the update will no longer be present in the viewed table.

SQLSTATE HY

SQLSTATE Error Can be returned from
HY000 General error
  • An error occurred for which there was no specific SQLSTATE and for which no implementation-specific SQLSTATE was defined. The error message returned by SQLGetDiagRec in the *MessageText buffer describes the error and its cause.
  • All ODBC functions except:

    SQLError

    SQLGetDiagField

    SQLGetDiagRec

HY001 Memory allocation error
HY003 Invalid application buffer type
  • SQLBindCol

    The argument TargetType was neither a valid data type nor SQL_C_DEFAULT.

  • SQLBindParameter

    The value specified by the argument ValueType was not a valid C data type or SQL_C_DEFAULT.

  • SQLGetData

    (Driver Manager.) The argument TargetType was neither a valid data type, SQL_C_DEFAULT, nor SQL_ARD_TYPE.

    (Driver Manager.) The argument ColumnNumber was 0, and the argument TargetType was not SQL_C_BOOKMARK for a fixed-length bookmark or SQL_C_VARBOOKMARK for a variable-length bookmark.

HY004 Invalid SQL data type
  • SQLBindParameter

    The value specified for the argument ParameterType was neither a valid ODBC SQL data type identifier nor a driver-specific SQL data type identifier supported by the ODBC driver.

  • SQLGetTypeInfo

    The value specified for the argument DataType was neither a valid ODBC SQL data type identifier nor a driver-specific data type identifier supported by the ODBC driver.

HY007 Associated statement is not prepared
  • SQLCopyDesc

    SourceDescHandle was associated with an IRD, and the associated statement handle was not in the prepared or executed state.

  • SQLGetDescField

    DescriptorHandle was associated with a StatementHandle as an IRD, and the associated statement handle had not been prepared or executed.

  • SQLGetDescRec

    DescriptorHandle was associated with an IRD, and the associated statement handle was not in the prepared or executed state.

HY008 Operation cancelled
HY009 Invalid use of null pointer
  • SQLAllocHandle

    (Driver Manager.) The OutputHandlePtr argument was a null pointer.

  • SQLBindParameter

    (Driver Manager.) The argument ParameterValuePtr was a null pointer, the argument StrLen_or_IndPtr was a null pointer, and the argument InputOutputType was not SQL_PARAM_OUTPUT.

    (Driver Manager.) SQL_PARAM_OUTPUT, where the argument ParameterValuePtr was a null pointer, the C type was char or binary, and the BufferLength (cbValueMax) was greater than 0.

  • SQLBulkOperations
  • SQLColumnPrivileges

    The TableName argument was a null pointer.

    The SQL_ATTR_METADATA_ID statement attribute was set to SQL_TRUE, the CatalogName argument was a null pointer, and the SQL_CATALOG_NAME InfoType returns that catalog names are supported.

    (Driver Manager.) The SQL_ATTR_METADATA_ID statement attribute was set to SQL_TRUE, and the SchemaName or ColumnName argument was a null pointer.

  • SQLColumns

    The SQL_ATTR_METADATA_ID statement attribute was set to SQL_TRUE, the CatalogName argument was a null pointer, and the SQL_CATALOG_NAME InfoType returns that catalog names are supported.

    (Driver Manager.) The SQL_ATTR_METADATA_ID statement attribute was set to SQL_TRUE, and the SchemaName, TableName, or ColumnName argument was a null pointer.

  • SQLExecDirect

    (Driver Manager.) *StatementText was a null pointer.

  • SQLForeignKeys

    (Driver Manager.) The arguments PKTableName and FKTableName were both null pointers.

    The SQL_ATTR_METADATA_ID statement attribute was set to SQL_TRUE, the FKCatalogName or PKCatalogName argument was a null pointer, and the SQL_CATALOG_NAME InfoType returns that catalog names are supported.

    (Driver Manager.) The SQL_ATTR_METADATA_ID statement attribute was set to SQL_TRUE, and the FKSchemaName, PKSchemaName, FKTableName, or PKTableName argument was a null pointer.

  • SQLGetCursorName
  • SQLGetData

    (Driver Manager.) The argument CursorNamewas a null pointer.

  • SQLGetFunctions
  • SQLNativeSql

    (Driver Manager.) *InStatementText was a null pointer.

  • SQLPrepare

    (Driver Manager.) StatementText was a null pointer.

  • SQLPrimaryKeys

    (Driver Manager.) The TableName argument was a null pointer.

    The SQL_ATTR_METADATA_ID statement attribute was set to SQL_TRUE, the CatalogName argument was a null pointer, and SQLGetInfo with the SQL_CATALOG_NAME information type returns that catalog names are supported.

    (Driver Manager.) The SQL_ATTR_METADATA_ID statement attribute was set to SQL_TRUE, and the SchemaName argument was a null pointer.

  • SQLProcedureColumns

    The SQL_ATTR_METADATA_ID statement attribute was set to SQL_TRUE, the CatalogName argument was a null pointer, and the SQL_CATALOG_NAME InfoType returns that catalog names are supported.

    (Driver Manager.) The SQL_ATTR_METADATA_ID statement attribute was set to SQL_TRUE, and the SchemaName, ProcName, or ColumnName argument was a null pointer.

  • SQLProcedures

    The SQL_ATTR_METADATA_ID statement attribute was set to SQL_TRUE, the CatalogName argument was a null pointer, and the SQL_CATALOG_NAME InfoType returns that catalog names are supported.

    (Driver Manager.) The SQL_ATTR_METADATA_ID statement attribute was set to SQL_TRUE, and the SchemaNameor ProcName argument was a null pointer.

  • SQLPutData

    (Driver Manager.) The argument DataPtr was a null pointer, and the argument StrLen_or_Ind was not 0, SQL_DEFAULT_PARAM, or SQL_NULL_DATA.

  • SQLSetConnectAttr

    The Attribute argument identified a connection attribute that required a string value, and the ValuePtrargument was a null pointer.

  • SQLSetCursorName

    (Driver Manager.) The argument CursorName was a null pointer.

  • SQLSetEnvAttr

    The Attribute argument identified an environment attribute that required a string value, and the ValuePtr argument was a null pointer.

  • SQLSetStmtAttr

    The Attribute argument identified a statement attribute that required a string attribute, and the ValuePtrargument was a null pointer.

  • SQLSpecialColumns, SQLStatistics, SQLTablePrivileges, SQLTables

    The TableName argument was a null pointer.

    The SQL_ATTR_METADATA_ID statement attribute was set to SQL_TRUE, the CatalogName argument was a null pointer, and the SQL_CATALOG_NAME InfoType returns that catalog names are supported.

    (Driver Manager.) The SQL_ATTR_METADATA_ID statement attribute was set to SQL_TRUE, and the SchemaName argument was a null pointer.

HY010 Function sequence error
  • SQLAllocHandle
  • SQLBindCol, SQLBindParameter, SQLCloseCursor, SQLColumnPrivileges, SQLColumns

    (Driver Manager.) An asynchronously executing function was called for the StatementHandle and was still executing when this function was called.

    (Driver Manager.) SQLExecute, SQLExecDirect, SQLBulkOperations, or SQLSetPos was called for the StatementHandle and returned SQL_NEED_DATA. This function was called before data was sent for all data-at-execution parameters or columns.

  • SQLBulkOperations

    (Driver Manager.) The specified StatementHandle was not in an executed state. The function was called without first calling SQLExecDirect, SQLExecute, or a catalog function.

    (Driver Manager.) An asynchronously executing function (not this one) was called for the StatementHandle and was still executing when this function was called.

    (Driver Manager.) SQLExecute, SQLExecDirect, or SQLSetPos was called for the StatementHandle and returned SQL_NEED_DATA. This function was called before data was sent for all data-at-execution parameters or columns.

    (Driver Manager.) The ODBC driver was an ODBC 2.x driver, and SQLBulkOperations was called for a StatementHandle before SQLFetchScroll or SQLFetch was called.

    (Driver Manager.) SQLBulkOperations was called after SQLExtendedFetch was called on the StatementHandle.

  • SQLColAttribute, SQLDescribeCol, SQLDescribeParam, SQLNumParams, SQLNumResultCols, SQLRowCount

    (Driver Manager.) The function was called prior to calling SQLPrepare, SQLExecDirect, or a catalog function for the StatementHandle.

    (Driver Manager.) An asynchronously executing function (not this one) was called for the StatementHandle and was still executing when this function was called.

    (Driver Manager.) SQLExecute, SQLExecDirect, SQLBulkOperations, or SQLSetPos was called for the StatementHandle and returned SQL_NEED_DATA. This function was called before data was sent for all data-at-execution parameters or columns.

  • SQLCopyDesc

    (Driver Manager.) The descriptor handle in SourceDescHandle or TargetDescHandle was associated with a StatementHandle for which an asynchronously executing function (not this one) was called and was still executing when this function was called.

    (Driver Manager.) The descriptor handle in SourceDescHandle or TargetDescHandle was associated with a StatementHandle for which SQLExecute, SQLExecDirect, SQLBulkOperations, or SQLSetPos was called and returned SQL_NEED_DATA. This function was called before data was sent for all data-at-execution parameters or columns.

  • SQLDisconnect, SQLEndTran

    (Driver Manager.) An asynchronously executing function was called for a StatementHandle associated with the ConnectionHandle and was still executing when SQLDisconnect was called.

    (Driver Manager.) SQLExecute, SQLExecDirect, SQLBulkOperations, or SQLSetPos was called for a StatementHandle associated with the ConnectionHandle and returned SQL_NEED_DATA. This function was called before data was sent for all data-at-execution parameters or columns.

  • SQLExecDirect, SQLExecute, SQLForeignKeys, SQLFreeStmt, SQLGetCursorName

    (Driver Manager.) An asynchronously executing function (not this one) was called for the StatementHandle and was still executing when this function was called.

    (Driver Manager.) SQLExecute, SQLExecDirect, SQLBulkOperations, or SQLSetPos was called for the StatementHandle and returned SQL_NEED_DATA. This function was called before data was sent for all data-at-execution parameters or columns.

  • SQLExtendedFetch

    (Driver Manager.) The specified StatementHandle was not in an executed state. The function was called without first calling SQLExecDirect, SQLExecute, or a catalog function.

    (Driver Manager.) An asynchronously executing function (not this one) was called for the StatementHandle and was still executing when this function was called.

    (Driver Manager.) SQLExecute, SQLExecDirect, SQLBulkOperations, or SQLSetPos was called for the StatementHandle and returned SQL_NEED_DATA. This function was called before data was sent for all data-at-execution parameters or columns.

    (Driver Manager.) SQLExtendedFetch was called for the StatementHandle after SQLFetch or SQLFetchScroll was called and before SQLFreeStmt was called with the SQL_CLOSE option.

    (Driver Manager.) SQLBulkOperations was called for a statement before SQLFetch, SQLFetchScroll, or SQLExtendedFetch was called, and then SQLExtendedFetch was called before SQLFreeStmt was called with the SQL_CLOSE option.

  • SQLFetch, SQLFetchScroll

    (Driver Manager.) The specified StatementHandle was not in an executed state. The function was called without first callingSQLExecDirect, SQLExecute or a catalog function.

    (Driver Manager.) An asynchronously executing function (not this one) was called for the StatementHandle and was still executing when this function was called.

    (Driver Manager.) SQLExecute,SQLExecDirect, SQLBulkOperations, or SQLSetPos was called for the StatementHandle and returned SQL_NEED_DATA. This function was called before data was sent for all data-at-execution parameters or columns.

    (Driver Manager.) SQLFetch was called for the StatementHandle after SQLExtendedFetch was called and before SQLFreeStmt with the SQL_CLOSE option was called.

  • SQLFreeHandle

    (Driver Manager.) The HandleType argument was SQL_HANDLE_ENV, and at least one connection was in an allocated or connected state. SQLDisconnect and SQLFreeHandle with a HandleType of SQL_HANDLE_DBC must be called for each connection before calling SQLFreeHandle with a HandleType of SQL_HANDLE_ENV.

    (Driver Manager.) The HandleType argument was SQL_HANDLE_DBC, and the function was called before calling SQLDisconnect for the connection.

    (Driver Manager.) The HandleType argument was SQL_HANDLE_STMT; an asynchronously executing function was called on the statement handle; and the function was still executing when this function was called.

    (Driver Manager.) The HandleType argument was SQL_HANDLE_STMT; SQLExecute,SQLExecDirect, SQLBulkOperations, or SQLSetPos was called with the statement handle and returned SQL_NEED_DATA. This function was called before data was sent for all data-at-execution parameters or columns.

    (Driver Manager.) All subsidiary handles and other resources were not released before SQLFreeHandle was called.

  • SQLGetConnectAttr

    (Driver Manager.) SQLBrowseConnect was called for the ConnectionHandle and returned SQL_NEED_DATA. This function was called before SQLBrowseConnect returned SQL_SUCCESS_WITH_INFO or SQL_SUCCESS.

  • SQLGetData

    (Driver Manager.) The specified StatementHandle was not in an executed state. The function was called without first callingSQLExecDirect, SQLExecute or a catalog function.

    (Driver Manager.) An asynchronously executing function (not this one) was called for the StatementHandle and was still executing when this function was called.

    (Driver Manager.) SQLExecute,SQLExecDirect, SQLBulkOperations, or SQLSetPos was called for the StatementHandle and returned SQL_NEED_DATA. This function was called before data was sent for all data-at-execution parameters or columns.

    (Driver Manager.) The StatementHandle was in an executed state, but no result set was associated with the StatementHandle.

  • SQLGetDescField, SQLGetDescRec

    (Driver Manager.) DescriptorHandle was associated with a StatementHandle for which an asynchronously executing function (not this one) was called and was still executing when this function was called.

    (Driver Manager.) DescriptorHandle was associated with a StatementHandle for which SQLExecute,SQLExecDirect, SQLBulkOperations, or SQLSetPos was called and returned SQL_NEED_DATA. This function was called before data was sent for all data-at-execution parameters or columns.

  • SQLGetFunctions

    (Driver Manager.) SQLGetFunctions was called before SQLConnect, SQLBrowseConnect, or SQLDriverConnect .

    (Driver Manager.) SQLBrowseConnect was called for the ConnectionHandle and returned SQL_NEED_DATA. This function was called before SQLBrowseConnect returned SQL_SUCCESS_WITH_INFO or SQL_SUCCESS.

  • SQLGetStmtAttr, SQLGetTypeInfo, SQLMoreResults

    (Driver Manager.) An asynchronously executing function was called for the StatementHandle and was still executing when this function was called.

    (Driver Manager.) SQLExecute,SQLExecDirect, SQLBulkOperations, or SQLSetPos was called for the StatementHandle and returned SQL_NEED_DATA. This function was called before data was sent for all data-at-execution parameters or columns.

  • SQLParamData

    (Driver Manager.) The previous function call was not a call toSQLExecDirect, SQLExecute, SQLBulkOperations, or SQLSetPos where the return code was SQL_NEED_DATA, or the previous function call was a call to SQLPutData.

    The previous function call was a call to SQLParamData.

    (Driver Manager.) An asynchronously executing function (not this one) was called for the StatementHandle and was still executing when this function was called.

    SQLExecute,SQLExecDirect, SQLBulkOperations, or SQLSetPos was called for the StatementHandle and returned SQL_NEED_DATA. SQLCancel was called before data was sent for all data-at-execution parameters or columns.

  • SQLPrepare, SQLPrimaryKeys, SQLProcedureColumns, SQLProcedures, SQLSetCursorName, SQLSetStmtAttr, SQLSpecialColumns, SQLStatistics, SQLTablePrivileges, SQLTables

    (Driver Manager.) An asynchronously executing function (not this one) was called for the StatementHandle and was still executing when this function was called.

    (Driver Manager.)SQLExecute,SQLExecDirect, SQLBulkOperations, or SQLSetPos was called for the StatementHandle and returned SQL_NEED_DATA. This function was called before data was sent for all data-at-execution parameters or columns.

  • SQLPutData

    (Driver Manager.) The previous function call was not a call to SQLPutData or SQLParamData.

    (Driver Manager.) An asynchronously executing function (not this one) was called for the StatementHandle and was still executing when this function was called.

  • SQLSetConnectAttr

    (Driver Manager.) An asynchronously executing function was called for a StatementHandle associated with the ConnectionHandle and was still executing when SQLSetConnectAttr was called.

    (Driver Manager.)SQLExecute,SQLExecDirect, SQLBulkOperations, or SQLSetPos was called for a StatementHandle associated with the ConnectionHandle and returned SQL_NEED_DATA. This function was called before data was sent for all data-at-execution parameters or columns.

    (Driver Manager.) SQLBrowseConnect was called for the ConnectionHandle and returned SQL_NEED_DATA. This function was called before SQLBrowseConnect returned SQL_SUCCESS_WITH_INFO or SQL_SUCCESS.

  • SQLSetDescField, SQLSetDescRec

    (Driver Manager.) The DescriptorHandle was associated with a StatementHandle for which an asynchronously executing function (not this one) was called and was still executing when this function was called.

    (Driver Manager.)SQLExecute,SQLExecDirect, SQLBulkOperations, or SQLSetPos was called for the StatementHandle with which the DescriptorHandle was associated and returned SQL_NEED_DATA. This function was called before data was sent for all data-at-execution parameters or columns.

  • SQLSetEnvAttr

    (Driver Manager.) A connection handle has been allocated on EnvironmentHandle.

  • SQLSetPos

    (Driver Manager.) The specified StatementHandle was not in an executed state. The function was called without first callingSQLExecDirect,SQLExecute, or a catalog function.

    (Driver Manager.) An asynchronously executing function (not this one) was called for the StatementHandle and was still executing when this function was called.

    (Driver Manager.)SQLExecute,SQLExecDirect, SQLBulkOperations, or SQLSetPos was called for the StatementHandle and returned SQL_NEED_DATA. This function was called before data was sent for all data-at-execution parameters or columns.

    (Driver Manager.) The ODBC driver was an ODBC 2.x driver, and SQLSetPos was called for a StatementHandle after SQLFetchScroll was called.

HY011 Attribute cannot be set now
HY012 Invalid transaction operation code
  • SQLEndTran

    (Driver Manager.) The value specified for the argument CompletionType was neither SQL_COMMIT nor SQL_ROLLBACK.

HY013 Memory management error
HY014 Limit on the number of handles exceeded
  • SQLAllocHandle

    The ODBC driver-defined limit for the number of handles that can be allocated for the type of handle indicated by the HandleType argument has been reached.

HY015 No cursor name available
  • SQLGetCursorName

    (Driver Manager.) The ODBC driver was an ODBC 2.x driver, there was no open cursor on the statement, and no cursor name had been set with SQLSetCursorName.

HY016 Cannot modify an implementation row descriptor
  • SQLCopyDesc

    TargetDescHandle was associated with an IRD.

  • SQLSetDescField

    The DescriptorHandle argument was associated with an IRD, and the FieldIdentifier argument was not SQL_DESC_ARRAY_STATUS_PTR or SQL_DESC_ROWS_PROCESSED_PTR.

  • SQLSetDescRec

    The DescriptorHandle argument was associated with an IRD.

HY017 Invalid use of an automatically allocated descriptor handle
  • SQLFreeHandle

    (Driver Manager.) The Handle argument was set to the handle for an automatically allocated descriptor.

  • SQLSetStmtAttr

    (Driver Manager.) The Attribute argument was SQL_ATTR_IMP_ROW_DESC or SQL_ATTR_IMP_PARAM_DESC.

    (Driver Manager.) The Attribute argument was SQL_ATTR_APP_ROW_DESC or SQL_ATTR_APP_PARAM_DESC, and the value in ValuePtr was an implicitly allocated descriptor handle other than the handle originally allocated for the ARD or APD.

HY018 Server declined cancel request
  • SQLCancel

    The server declined the cancel request.

HY019 Non-character and non-binary data sent in pieces
  • SQLPutData

    SQLPutData was called more than once for a parameter or column, and it was not being used to send character C data to a column with a character, binary, or data source-specific data type or to send binary C data to a column with a character, binary, or data source-specific data type.

HY020 Attempt to concatenate a null value
  • SQLPutData

    SQLPutData was called more than once since the call that returned SQL_NEED_DATA, and in one of those calls, the StrLen_or_Ind argument contained SQL_NULL_DATA or SQL_DEFAULT_PARAM.

HY021 Inconsistent descriptor information
  • SQLBindParameter

    The descriptor information checked during a consistency check was not consistent. (Refer to the "Consistency Checks" section in SQLSetDescField.)

    The value specified for the argument DecimalDigits was outside the range of values supported by the data source for a column of the SQL data type specified by the ParameterType argument.

  • SQLCopyDesc

    The descriptor information checked during a consistency check was not consistent. For more information, refer to the "Consistency Checks" in SQLSetDescField.

  • SQLGetDescField

    The SQL_DESC_TYPE and SQL_DESC_DATETIME_INTERVAL_CODE fields do not form a valid ODBC SQL type, a valid ODBC driver-specific SQL type (for IPDs), or a valid ODBC C type (for APDs or ARDs).

  • SQLSetDescField

    The SQL_DESC_TYPE and SQL_DESC_DATETIME_INTERVAL_CODE fields do not form a valid ODBC SQL type or a valid ODBC driver-specific SQL type (for IPDs) or a valid ODBC C type (for APDs or ARDs).

    Descriptor information checked during a consistency check was not consistent. (Refer to "Consistency Check" in SQLSetDescRec.)

  • SQLSetDescRec

    The Type field, or any other field associated with the SQL_DESC_TYPE field in the descriptor, was not valid or consistent. Descriptor information checked during a consistency check was not consistent.

HY024 Invalid attribute value
  • SQLGetInfo

    (Driver Manager.) The InfoType argument was SQL_DRIVER_HSTMT, and the value pointed to by InfoValuePtr was not a valid statement handle.

  • SQLSetConnectAttr

    Given the specified Attribute value, an invalid value was specified in ValuePtr. (The Driver Manager returns this SQLSTATE only for connection and statement attributes that accept a discrete set of values, such as SQL_ATTR_ACCESS_MODE or SQL_ATTR_ASYNC_ENABLE. For all other connection and statement attributes, the ODBC driver must verify the value specified in ValuePtr.)

    The Attribute argument was SQL_ATTR_TRACEFILE or SQL_ATTR_TRANSLATE_LIB, and ValuePtr was an empty string.

  • SQLSetEnvAttr

    Given the specified Attribute value, an invalid value was specified in ValuePtr.

  • SQLSetStmtAttr

    Given the specified Attribute value, an invalid value was specified in ValuePtr. (The Driver Manager returns this SQLSTATE only for connection and statement attributes that accept a discrete set of values, such as SQL_ATTR_ACCESS_MODE or SQL_ATTR_ASYNC_ENABLE. For all other connection and statement attributes, the ODBC driver must verify the value specified in ValuePtr.)

    The Attribute argument was SQL_ATTR_APP_ROW_DESC or SQL_ATTR_APP_PARAM_DESC, and ValuePtr was an explicitly allocated descriptor handle that is not on the same connection as the StatementHandle argument.

HY090 Invalid string or buffer length
  • SQLBindCol

    (Driver Manager.) The value specified for the argument BufferLength was less than 0.

    (Driver Manager.) The ODBC driver was an ODBC 2.x driver, the ColumnNumber argument was set to 0, and the value specified for the argument BufferLength was not equal to 4.

  • SQLBindParameter

    (Driver Manager.) The value in BufferLength was less than 0. (Refer to the description of the SQL_DESC_DATA_PTR field in SQLSetDescField.)

  • SQLBrowseConnect

    (Driver Manager.) The value specified for argument StringLength1 was less than 0 and was not equal to SQL_NTS.

    (Driver Manager.) The value specified for argument BufferLength was less than 0.

  • SQLBulkOperations

    The Operation argument was SQL_ADD or SQL_UPDATE_BY_BOOKMARK; a data value was not a null pointer; the C data type was SQL_C_BINARY or SQL_C_CHAR; and the column length value was less than 0, but not equal to SQL_DATA_AT_EXEC, SQL_COLUMN_IGNORE, SQL_NTS, or SQL_NULL_DATA, or less than or equal to SQL_LEN_DATA_AT_EXEC_OFFSET.

    The value in a length/indicator buffer was SQL_DATA_AT_EXEC; the SQL type was either SQL_LONGVARCHAR, SQL_LONGVARBINARY, or a long data source-specific data type; and the SQL_NEED_LONG_DATA_LEN information type in SQLGetInfo was "Y".

    The Operation argument was SQL_ADD, the SQL_ATTR_USE_BOOKMARK statement attribute was set to SQL_UB_VARIABLE, and column 0 was bound to a buffer whose length was not equal to the maximum length for the bookmark for this result set. (This length is available in the SQL_DESC_OCTET_LENGTH field of the IRD and can be obtained by calling SQLDescribeCol, SQLColAttribute, or SQLGetDescField.)

  • SQLColAttribute

    (Driver Manager.) *CharacterAttributePtr is a character string, and BufferLength was less than 0 but not equal to SQL_NTS.

  • SQLColumnPrivileges

    (Driver Manager.) The value of one of the name length arguments was less than 0 but not equal to SQL_NTS.

    The value of one of the name length arguments exceeded the maximum length value for the corresponding name.

  • SQLColumns

    (Driver Manager.) The value of one of the name length arguments was less than 0 but not equal to SQL_NTS.

    The value of one of the name length arguments exceeded the maximum length value for the corresponding catalog or name. The maximum length of each catalog or name may be obtained by calling SQLGetInfo with the InfoType values.

  • SQLConnect

    (Driver Manager.) The value specified for argument NameLength1, NameLength2, or NameLength3was less than 0 but not equal to SQL_NTS.

    (Driver Manager.) The value specified for argument NameLength1 exceeded the maximum length for a data source name.

  • SQLDataSources

    (Driver Manager.) The value specified for argument BufferLength1 was less than 0.

    (Driver Manager.) The value specified for argument BufferLength2 was less than 0.

  • SQLDescribeCol

    (Driver Manager.) The value specified for argument BufferLength was less than 0.

  • SQLDriverConnect

    (Driver Manager.) The value specified for argument StringLength1 was less than 0 and was not equal to SQL_NTS.

    (Driver Manager.) The value specified for argument BufferLength was less than 0.

  • SQLDrivers

    (Driver Manager.) The value specified for argument BufferLength1 was less than 0.

    (Driver Manager.) The value specified for argument BufferLength2 was less than 0 or equal to 1.

  • SQLExecDirect

    (Driver Manager.) The argument TextLength was less than or equal to 0 but not equal to SQL_NTS.

    A parameter value, set with SQLBindParameter, was a null pointer, and the parameter length value was not 0, SQL_NULL_DATA, SQL_DATA_AT_EXEC, SQL_DEFAULT_PARAM, or less than or equal to SQL_LEN_DATA_AT_EXEC_OFFSET.

    A parameter value, set with SQLBindParameter, was not a null pointer; the C data type was SQL_C_BINARY or SQL_C_CHAR; and the parameter length value was less than 0 but was not SQL_NTS, SQL_NULL_DATA, SQL_DATA_AT_EXEC, SQL_DEFAULT_PARAM, or less than or equal to SQL_LEN_DATA_AT_EXEC_OFFSET.

    A parameter length value bound by SQLBindParameter was set to SQL_DATA_AT_EXEC; the SQL type was either SQL_LONGVARCHAR, SQL_LONGVARBINARY, or a long data source-specific data type; and the SQL_NEED_LONG_DATA_LEN information type in SQLGetInfo was "Y".

  • SQLExecute

    A parameter value, set with SQLBindParameter, was a null pointer, and the parameter length value was not 0, SQL_NULL_DATA, SQL_DATA_AT_EXEC, SQL_DEFAULT_PARAM, or less than or equal to SQL_LEN_DATA_AT_EXEC_OFFSET.

    A parameter value, set with SQLBindParameter, was not a null pointer; the C data type was SQL_C_BINARY or SQL_C_CHAR; and the parameter length value was less than 0 but was not SQL_NTS, SQL_NULL_DATA, SQL_DEFAULT_PARAM, or SQL_DATA_AT_EXEC, or less than or equal to SQL_LEN_DATA_AT_EXEC_OFFSET.

    A parameter length value bound by SQLBindParameter was set to SQL_DATA_AT_EXEC; the SQL type was either SQL_LONGVARCHAR, SQL_LONGVARBINARY, or a long data source-specific data type; and the SQL_NEED_LONG_DATA_LEN information type in SQLGetInfo was "Y".

  • SQLFetch

    The SQL_ATTR_USE_BOOKMARK statement attribute was set to SQL_UB_VARIABLE, and column 0 was bound to a buffer whose length was not equal to the maximum length for the bookmark for this result set. (This length is available in the SQL_DESC_OCTET_LENGTH field of the IRD and can be obtained by calling SQLDescribeCol, SQLColAttribute, or SQLGetDescField.)

  • SQLFetchScroll

    The SQL_ATTR_USE_BOOKMARK statement attribute was set to SQL_UB_VARIABLE, and column 0 was bound to a buffer whose length was not equal to the maximum length for the bookmark for this result set. (This length is available in the SQL_DESC_OCTET_LENGTH field of the IRD and can be obtained by calling SQLDescribeCol, SQLColAttribute, or SQLGetDescField.)

  • SQLForeignKeys

    (Driver Manager.) The value of one of the name length arguments was less than 0 but not equal to SQL_NTS.

    The value of one of the name length arguments exceeded the maximum length value for the corresponding name.

  • SQLGetConnectAttr

    (Driver Manager.) *ValuePtr is a character string, and BufferLength was less than zero but not equal to SQL_NTS.

  • SQLGetCursorName

    (Driver Manager.) The value specified in the argument BufferLength was less than 0.

  • SQLGetData

    (Driver Manager.) The value specified for argument BufferLength was less than 0.

    The value specified for argument BufferLength was less than 4, the ColumnNumber argument was set to 0, and the ODBC driver was an ODBC 2.x driver.

  • SQLGetDescField

    (Driver Manager.) *ValuePtr was a character string, and BufferLength was less than zero.

  • SQLGetInfo

    (Driver Manager.) The value specified for argument BufferLength was less than 0.

    (Driver Manager.) The value specified for BufferLength was an odd number, and *InfoValuePtrwas of a Unicode data type.

  • SQLGetStmtAttr

    (Driver Manager.) *ValuePtr is a character string, and BufferLength was less than zero, but not equal to SQL_NTS.

  • SQLNativeSql

    (Driver Manager.) The argument TextLength1 was less than 0, but not equal to SQL_NTS.

    (Driver Manager.) The argument BufferLength was less than 0 and the argument OutStatementText was not a null pointer.

  • SQLParamData
  • SQLPrepare

    (Driver Manager.) The argument TextLength was less than or equal to 0 but not equal to SQL_NTS.

  • SQLPrimaryKeys

    (Driver Manager.) The value of one of the name length arguments was less than 0 but not equal to SQL_NTS, and the associated name argument is not a null pointer.

    The value of one of the name length arguments exceeded the maximum length value for the corresponding name.

  • SQLProcedureColumns

    (Driver Manager.) The value of one of the name length arguments was less than 0 but not equal to SQL_NTS.

    The value of one of the name length arguments exceeded the maximum length value for the corresponding catalog, schema, procedure, or column name.

  • SQLProcedures

    (Driver Manager.) The value of one of the name length arguments was less than 0 but not equal to SQL_NTS.

    The value of one of the name length arguments exceeded the maximum length value for the corresponding name.

  • SQLPutData

    The argument DataPtr was not a null pointer, and the argument StrLen_or_Ind was less than 0 but not equal to SQL_NTS or SQL_NULL_DATA.

  • SQLSetConnectAttr

    (Driver Manager.) *ValuePtris a character string, and the StringLength argument was less than 0 but was not SQL_NTS.

  • SQLSetCursorName

    (Driver Manager.) The argument NameLength was less than 0 but not equal to SQL_NTS.

  • SQLSetDescField

    (Driver Manager.) *ValuePtr is a character string, and BufferLength was less than zero but was not equal to SQL_NTS.

    (Driver Manager.) The ODBC driver was an ODBC 2.x driver, the descriptor was an ARD, the ColumnNumber argument was set to 0, and the value specified for the argument BufferLength was not equal to 4.

  • SQLSetDescRec

    (Driver Manager.) The ODBC driver was an ODBC 2.x driver, the descriptor was an ARD, the ColumnNumber argument was set to 0, and the value specified for the argument BufferLength was not equal to 4.

  • SQLSetEnvAttr

    The StringLength argument was less than 0 but was not SQL_NTS.

  • SQLSetPos

    The Operation argument was SQL_UPDATE, a data value was a null pointer, and the column length value was not 0, SQL_DATA_AT_EXEC, SQL_COLUMN_IGNORE, SQL_NULL_DATA, or less than or equal to SQL_LEN_DATA_AT_EXEC_OFFSET.

    The Operation argument was SQL_UPDATE; a data value was not a null pointer; the C data type was SQL_C_BINARY or SQL_C_CHAR; and the column length value was less than 0 but not equal to SQL_DATA_AT_EXEC, SQL_COLUMN_IGNORE, SQL_NTS, or SQL_NULL_DATA, or less than or equal to SQL_LEN_DATA_AT_EXEC_OFFSET.

    The value in a length/indicator buffer was SQL_DATA_AT_EXEC; the SQL type was either SQL_LONGVARCHAR, SQL_LONGVARBINARY, or a long data source-specific data type; and the SQL_NEED_LONG_DATA_LEN information type in SQLGetInfo was "Y".

  • SQLSetStmtAttr

    (Driver Manager.) *ValuePtr is a character string, and the StringLength argument was less than 0 but was not SQL_NTS.

  • SQLSpecialColumns

    (Driver Manager.) The value of one of the length arguments was less than 0 but not equal to SQL_NTS.

    The value of one of the length arguments exceeded the maximum length value for the corresponding name. The maximum length of each name can be obtained by calling SQLGetInfo with the InfoType values: SQL_MAX_CATALOG_NAME_LEN, SQL_MAX_SCHEMA_NAME_LEN, or SQL_MAX_TABLE_NAME_LEN.

  • SQLStatistics

    (Driver Manager.) The value of one of the name length arguments was less than 0 but not equal to SQL_NTS.

    The value of one of the name length arguments exceeded the maximum length value for the corresponding name.

  • SQLTablePrivileges

    (Driver Manager.) The value of one of the name length arguments was less than 0 but not equal to SQL_NTS.

    The value of one of the name length arguments exceeded the maximum length value for the corresponding qualifier or name.

  • SQLTables

    (Driver Manager.) The value of one of the length arguments was less than 0 but not equal to SQL_NTS.

    The value of one of the name length arguments exceeded the maximum length value for the corresponding name.

HY091 Invalid descriptor field identifier
  • SQLColAttribute

    The value specified for the argument FieldIdentifier was not one of the defined values and was not an implementation-defined value.

  • SQLGetDescField

    FieldIdentifier was not an ODBC-defined field and was not an implementation-defined value.

    FieldIdentifier was undefined for the DescriptorHandle.

  • SQLSetDescField

    The value specified for the FieldIdentifier argument was not an ODBC-defined field and was not an implementation-defined value.

    The FieldIdentifier argument was invalid for the DescriptorHandle argument.

    The FieldIdentifier argument was a read-only, ODBC-defined field.

HY092 Invalid attribute/option identifier
  • SQLAllocHandle

    (Driver Manager.) The HandleType argument was not: SQL_HANDLE_ENV, SQL_HANDLE_DBC, SQL_HANDLE_STMT, or SQL_HANDLE_DESC.

  • SQLBulkOperations

    (Driver Manager.) The value specified for the Operation argument was invalid.

    The Operation argument was SQL_ADD, SQL_UPDATE_BY_BOOKMARK, or SQL_DELETE_BY_BOOKMARK, and the SQL_ATTR_CONCURRENCY statement attribute was set to SQL_CONCUR_READ_ONLY.

    The Operation argument was SQL_DELETE_BY_BOOKMARK, SQL_FETCH_BY_BOOKMARK, or SQL_UPDATE_BY_BOOKMARK, and the bookmark column was not bound or the SQL_ATTR_USE_BOOKMARKS statement attribute was set to SQL_UB_OFF.

  • SQLCopyDesc

    The call to SQLCopyDesc prompted a call to SQLSetDescField, but *ValuePtr was not valid for the FieldIdentifier argument on TargetDescHandle.

  • SQLDriverConnect

    (Driver Manager.) The DriverCompletion argument was SQL_DRIVER_PROMPT, and the WindowHandle argument was a null pointer.

  • SQLEndTran

    (Driver Manager.) The value specified for the argument HandleType was neither SQL_HANDLE_ENV nor SQL_HANDLE_DBC.

  • SQLFreeStmt

    (Driver Manager.) The value specified for the argument Option was not:

    SQL_CLOSE
    SQL_DROP
    SQL_UNBIND
    SQL_RESET_PARAMS
  • SQLGetConnectAttr, SQLGetEnvAttr, SQLGetStmtAttr

    The value specified for the argument Attribute was not valid for the version of ODBC supported by the ODBC driver.

  • SQLParamData
  • SQLSetConnectAttr

    (Driver Manager.) The value specified for the argument Attribute was not valid for the version of ODBC supported by the ODBC driver.

    (Driver Manager.) The value specified for the argument Attribute was a read-only attribute.

  • SQLSetDescField

    The value in *ValuePtr was not valid for the FieldIdentifier argument.

    The FieldIdentifier argument was SQL_DESC_UNNAMED, and ValuePtr was SQL_NAMED.

  • SQLSetEnvAttr

    (Driver Manager.) The value specified for the argument Attribute was not valid for the version of ODBC supported by the ODBC driver.

  • SQLSetPos

    (Driver Manager.) The value specified for the Operation argument was invalid.

    (Driver Manager.) The value specified for the LockType argument was invalid.

    The Operation argument was SQL_UPDATE or SQL_DELETE, and the SQL_ATTR_CONCURRENCY statement attribute was SQL_ATTR_CONCUR_READ_ONLY.

  • SQLSetStmtAttr

    (Driver Manager.) The value specified for the argument Attribute was not valid for the version of ODBC supported by the ODBC driver.

    (Driver Manager.) The value specified for the argument Attribute was a read-only attribute.

HY095 Function type out of range
  • SQLGetFunctions

    (Driver Manager.) An invalid FunctionId value was specified.

HY096 Invalid information type
  • SQLGetInfo

    The value specified for the argument InfoType was not valid for the version of ODBC supported by the ODBC driver.

HY097 Column type out of range
HY098 Scope type out of range
HY099 Nullable type out of range
HY100 Uniqueness option type out of range
  • SQLStatistics

    (Driver Manager.) An invalid Unique value was specified.

HY101 Accuracy option type out of range
  • SQLStatistics

    (Driver Manager.) An invalid Reserved value was specified.

HY103 Invalid retrieval code
  • SQLDataSources

    (Driver Manager.) The value specified for the argument Direction was not equal to SQL_FETCH_FIRST, SQL_FETCH_FIRST_USER, SQL_FETCH_FIRST_SYSTEM, or SQL_FETCH_NEXT.

  • SQLDrivers

    (Driver Manager.) The value specified for the argument Direction was not equal to SQL_FETCH_FIRST or SQL_FETCH_NEXT.

HY104 Invalid precision or scale value
  • SQLBindParameter

    The value specified for the argument ColumnSize or DecimalDigits was outside the range of values supported by the data source for a column of the SQL data type specified by the ParameterType argument.

HY105 Invalid parameter type
  • SQLBindParameter

    (Driver Manager.) The value specified for the argument InputOutputType was invalid.

  • SQLExecDirect,SQLExecute

    The value specified for the argument InputOutputType in

    SQLBindParameter was SQL_PARAM_OUTPUT, and the parameter was an input parameter.

  • SQLParamData
  • SQLSetDescField

    (Driver Manager.) The value specified for the SQL_DESC_PARAMETER_TYPE field was invalid. (For more information, refer to the "InputOutputType Argument" section in SQLBindParameter.)

HY106 Fetch type out of range
  • SQLExtendedFetch

    (Driver Manager.) The value specified for the argument FetchOrientation was invalid. 

    The argument FetchOrientation was SQL_FETCH_BOOKMARK, and the SQL_ATTR_USE_BOOKMARKS statement attribute was set to SQL_UB_OFF.

    The value of the SQL_CURSOR_TYPE statement option was SQL_CURSOR_FORWARD_ONLY, and the value of argument FetchOrientation was not SQL_FETCH_NEXT.

    The argument FetchOrientation was SQL_FETCH_RESUME.

  • SQLFetchScroll

    (Driver Manager.) The value specified for the argument FetchOrientation was invalid.

    (Driver Manager.) The argument FetchOrientation was SQL_FETCH_BOOKMARK, and the SQL_ATTR_USE_BOOKMARKS statement attribute was set to SQL_UB_OFF.

    The value of the SQL_ATTR_CURSOR_TYPE statement attribute was SQL_CURSOR_FORWARD_ONLY, and the value of argument FetchOrientation was not SQL_FETCH_NEXT.

    The value of the SQL_ATTR_CURSOR_SCROLLABLE statement attribute was SQL_NONSCROLLABLE, and the value of argument FetchOrientation was not SQL_FETCH_NEXT.

HY107 Row value out of range
  • SQLExtendedFetch

    The value specified with the SQL_CURSOR_TYPE statement option was SQL_CURSOR_KEYSET_DRIVEN, but the value specified with the SQL_KEYSET_SIZE statement attribute was greater than 0 and less than the value specified with the SQL_ROWSET_SIZE statement attribute.

  • SQLFetch, SQLFetchScroll

    The value specified with the SQL_ATTR_CURSOR_TYPE statement attribute was SQL_CURSOR_KEYSET_DRIVEN, but the value specified with the SQL_ATTR_KEYSET_SIZE statement attribute was greater than 0 and less than the value specified with the SQL_ATTR_ROW_ARRAY_SIZE statement attribute.

  • SQLSetPos

    The value specified for the argument RowNumber was greater than the number of rows in the rowset.

HY109 Invalid cursor position
  • SQLExecDirect

    *StatementText contained a positioned update or delete statement, and the cursor was positioned (by SQLSetPos or SQLFetchScroll) on a row that had been deleted or could not be fetched.

  • SQLExecute

    The prepared statement was a positioned update or delete statement, and the cursor was positioned (by SQLSetPos or SQLFetchScroll) on a row that had been deleted or could not be fetched.

  • SQLGetData

    The cursor was positioned (by SQLSetPos, SQLFetch, SQLFetchScroll, or SQLBulkOperations ) on a row that had been deleted or could not be fetched.

    The cursor was a forward-only cursor, and the rowset size was greater than one.

  • SQLGetStmtAttr

    The Attribute argument was SQL_ATTR_ROW_NUMBER and the row had been deleted or could not be fetched.

  • SQLNativeSql

    The current row of the cursor had been deleted or had not been fetched. This error may not be returned by a ODBC driver having a native DBMS cursor implementation.

  • SQLParamData
  • SQLSetPos

    The cursor associated with the StatementHandle was defined as forward-only, so the cursor could not be positioned within the rowset. See the description for the SQL_ATTR_CURSOR_TYPE attribute in SQLSetStmtAttr.

    The Operation argument was SQL_UPDATE, SQL_DELETE, or SQL_REFRESH, and the row identified by the RowNumber argument had been deleted or had not been fetched.

    (Driver Manager.) The RowNumber argument was 0, and the Operation argument was SQL_POSITION.

    SQLSetPos was called after SQLBulkOperations was called and before SQLFetchScroll or SQLFetch was called.

HY110 Invalid driver completion
  • SQLDriverConnect

    (Driver Manager.) The value specified for the argument DriverCompletion was not equal to SQL_DRIVER_PROMPT, SQL_DRIVER_COMPLETE, SQL_DRIVER_COMPLETE_REQUIRED, or SQL_DRIVER_NOPROMPT.

    (Driver Manager.) Connection pooling was enabled, and the value specified for the argument DriverCompletion was not equal to SQL_DRIVER_NOPROMPT.

HY111 Invalid bookmark value
  • SQLExtendedFetch

    The argument FetchOrientation was SQL_FETCH_BOOKMARK, and the bookmark specified in the FetchOffset argument was not valid.

  • SQLFetchScroll

    The argument FetchOrientation was SQL_FETCH_BOOKMARK, and the bookmark pointed to by the value in the SQL_ATTR_FETCH_BOOKMARK_PTR statement attribute was not valid or was a null pointer.

HYC00 Optional feature not implemented
  • SQLAllocHandle

    The HandleType argument was SQL_HANDLE_DESC and the ODBC driver was an ODBC 2.x driver.

  • SQLBindCol, SQLBindParameter

    The ODBC driver or data source does not support the conversion specified by the combination of the TargetType argument and the driver-specific SQL data type of the corresponding column.

    The argument ColumnNumber was 0 and the ODBC driver does not support bookmarks.

    The ODBC driver supports only ODBC 2.x and the argument TargetType was one of the following:

    SQL_C_GUID
    SQL_C_NUMERIC
    SQL_C_SBIGINT
    SQL_C_UBIGINT

    and any of the interval C data types listed in Data Types in Appendix D: Data Types.

  • SQLBulkOperations

    The ODBC driver or data source does not support the operation requested in the Operation argument.

  • SQLColAttribute

    The value specified for the argument FieldIdentifier was not supported by the ODBC driver.

  • SQLColumnPrivileges

    A catalog name was specified, and the ODBC driver or data source does not support catalogs.

    A schema name was specified, and the ODBC driver or data source does not support schemas.

    A string search pattern was specified for the column name, and the data source does not support search patterns for that argument.

    The combination of the current settings of the SQL_CONCURRENCY and SQL_CURSOR_TYPE statement attributes was not supported by the ODBC driver or data source.

    The SQL_ATTR_USE_BOOKMARKS statement attribute was set to SQL_UB_VARIABLE, and the SQL_ATTR_CURSOR_TYPE statement attribute was set to a cursor type for which the ODBC driver does not support bookmarks.

  • SQLColumns

    A catalog name was specified, and the ODBC driver or data source does not support catalogs.

    A schema name was specified, and the ODBC driver or data source does not support schemas.

    A string search pattern was specified for the schema name, table name, or column name, and the data source does not support search patterns for one or more of those arguments.

    The combination of the current settings of the SQL_ATTR_CONCURRENCY and SQL_ATTR_CURSOR_TYPE statement attributes was not supported by the ODBC driver or data source.

    The SQL_ATTR_USE_BOOKMARKS statement attribute was set to SQL_UB_VARIABLE, and the SQL_ATTR_CURSOR_TYPE statement attribute was set to a cursor type for which the ODBC driver does not support bookmarks.

  • SQLDriverConnect

    The ODBC driver does not support the version of ODBC behaviour that the application requested.

  • SQLEndTran

    The ODBC driver or data source does not support the ROLLBACK operation.

  • SQLExecDirect,SQLExecute

    The combination of the current settings of the SQL_ATTR_CONCURRENCY and SQL_ATTR_CURSOR_TYPE statement attributes was not supported by the ODBC driver or data source.

    The SQL_ATTR_USE_BOOKMARKS statement attribute was set to SQL_UB_VARIABLE, and the SQL_ATTR_CURSOR_TYPE statement attribute was set to a cursor type for which the ODBC driver does not support bookmarks.

  • SQLExtendedFetch

    Driver or data source does not support the specified fetch type.

    The ODBC driver or data source does not support the conversion specified by the combination of the TargetType in SQLBindCol and the SQL data type of the corresponding column. This error applies only when the SQL data type of the column was mapped to a ODBC driver-specific SQL data type.

  • SQLFetch

    The ODBC driver or data source does not support the conversion specified by the combination of the TargetType in SQLBindCol and the SQL data type of the corresponding column.

  • SQLFetchScroll

    Driver or data source does not support the specified fetch type.

    The ODBC driver or data source does not support the conversion specified by the combination of the TargetType in SQLBindCol and the SQL data type of the corresponding column.

    FetchOrientation was SQL_FETCH_BOOKMARK, FetchOffset was not equal to 0, and the underlying ODBC driver is an ODBC 2.x driver.

  • SQLForeignKeys

    A catalog name was specified, and the ODBC driver or data source does not support catalogs.

    A schema name was specified, and the ODBC driver or data source does not support schemas.

    The combination of the current settings of the SQL_ATTR_CONCURRENCY and SQL_ATTR_CURSOR_TYPE statement attributes was not supported by the ODBC driver or data source.

    The SQL_ATTR_USE_BOOKMARKS statement attribute was set to SQL_UB_VARIABLE, and the SQL_ATTR_CURSOR_TYPE statement attribute was set to a cursor type for which the ODBC driver does not support bookmarks.

  • SQLGetConnectAttr

    The value specified for the argument Attribute was a valid ODBC connection attribute for the version of ODBC supported by the ODBC driver, but was not supported by the driver.

  • SQLGetData

    The ODBC driver or data source does not support use of SQLGetData with multiple rows in SQLFetchScroll. This description does not apply to ODBC drivers that return the SQL_GD_BLOCK bitmask for the SQL_GETDATA_EXTENSIONS option in SQLGetInfo.

    The ODBC driver or data source does not support the conversion specified by the combination of the TargetType argument and the SQL data type of the corresponding column. This error applies only when the SQL data type of the column was mapped to a driver-specific SQL data type.

    The ODBC driver supports only ODBC 2.x, and the argument TargetType was one of the following:

    SQL_C_GUID
    SQL_C_NUMERIC
    SQL_C_SBIGINT
    SQL_C_UBIGINT

    and any of the interval C data types listed in C Data Types.

  • SQLGetEnvAttr
  • SQLGetInfo

    The value specified for the argument InfoType was a driver-specific value that is not supported by the ODBC driver.

  • SQLGetStmtAttr

    The value specified for the argument Attribute was a valid ODBC statement attribute for the version of ODBC supported by the ODBC driver, but was not supported by the driver.

  • SQLGetTypeInfo

    The combination of the current settings of the SQL_ATTR_CONCURRENCY and SQL_ATTR_CURSOR_TYPE statement attributes was not supported by the ODBC driver or data source.

    The SQL_ATTR_USE_BOOKMARKS statement attribute was set to SQL_UB_VARIABLE, and the SQL_ATTR_CURSOR_TYPE statement attribute was set to a cursor type for which the ODBC driver does not support bookmarks.

  • SQLParamData
  • SQLPrepare

    The concurrency setting was invalid for the type of cursor defined.

    The SQL_ATTR_USE_BOOKMARKS statement attribute was set to SQL_UB_VARIABLE, and the SQL_ATTR_CURSOR_TYPE statement attribute was set to a cursor type for which the ODBC driver does not support bookmarks.

  • SQLPrimaryKeys

    A catalog was specified, and the ODBC driver or data source does not support catalogs.

    A schema was specified and the ODBC driver or data source does not support schemas.

    The combination of the current settings of the SQL_ATTR_CONCURRENCY and SQL_ATTR_CURSOR_TYPE statement attributes was not supported by the ODBC driver or data source.

    The SQL_ATTR_USE_BOOKMARKS statement attribute was set to SQL_UB_VARIABLE, and the SQL_ATTR_CURSOR_TYPE statement attribute was set to a cursor type for which the ODBC driver does not support bookmarks.

  • SQLProcedureColumns, SQLProcedures

    A procedure catalog was specified, and the ODBC driver or data source does not support catalogs.

    A procedure schema was specified, and the ODBC driver or data source does not support schemas.

    A string search pattern was specified for the procedure schema, procedure name, or column name, and the data source does not support search patterns for one or more of those arguments.

    The combination of the current settings of the SQL_ATTR_CONCURRENCY and SQL_ATTR_CURSOR_TYPE statement attributes was not supported by the ODBC driver or data source.

    The SQL_ATTR_USE_BOOKMARKS statement attribute was set to SQL_UB_VARIABLE, and the SQL_ATTR_CURSOR_TYPE statement attribute was set to a cursor type for which the ODBC driver does not support bookmarks.

  • SQLSetConnectAttr

    The value specified for the argument Attribute was a valid ODBC connection or statement attribute for the version of ODBC supported by the ODBC driver but was not supported by the ODBC driver.

  • SQLSetEnvAttr

    The value specified for the argument Attribute was a valid ODBC environment attribute for the version of ODBC supported by the ODBC driver, but was not supported by the driver.

    (Driver Manager.) The Attribute argument was SQL_ATTR_OUTPUT_NTS, and ValuePtr was SQL_FALSE.

  • SQLSetPos

    The ODBC driver or data source does not support the operation requested in the Operation argument or the LockType argument.

  • SQLSetStmtAttr

    The value specified for the argument Attribute was a valid ODBC statement attribute for the version of ODBC supported by the ODBC driver but was not supported by the driver.

    The Attribute argument was SQL_ATTR_ASYNC_ENABLE, and a call to SQLGetInfo with an InfoType of SQL_ASYNC_MODE returns SQL_AM_CONNECTION.

    The Attribute argument was SQL_ATTR_ENABLE_AUTO_IPD, and the value of the connection attribute SQL_ATTR_AUTO_IPD was SQL_FALSE.

  • SQLSpecialColumns, SQLStatistics

    A catalog was specified, and the ODBC driver or data source does not support catalogs.

    A schema was specified, and the ODBC driver or data source does not support schemas.

    The combination of the current settings of the SQL_ATTR_CONCURRENCY and SQL_ATTR_CURSOR_TYPE statement attributes was not supported by the ODBC driver or data source.

    The SQL_ATTR_USE_BOOKMARKS statement attribute was set to SQL_UB_VARIABLE, and the SQL_ATTR_CURSOR_TYPE statement attribute was set to a cursor type for which the ODBC driver does not support bookmarks.

  • SQLTablePrivileges, SQLTables

    A catalog was specified, and the ODBC driver or data source does not support catalogs.

    A schema was specified, and the ODBC driver or data source does not support schemas.

    A string search pattern was specified for the table schema, table name, or column name, and the data source does not support search patterns for one or more of those arguments.

    The combination of the current settings of the SQL_ATTR_CONCURRENCY and SQL_ATTR_CURSOR_TYPE statement attributes was not supported by the ODBC driver or data source.

    The SQL_ATTR_USE_BOOKMARKS statement attribute was set to SQL_UB_VARIABLE, and the SQL_ATTR_CURSOR_TYPE statement attribute was set to a cursor type for which the ODBC driver does not support bookmarks.

HYT00 Timeout expired
HYT01 Connection timeout expired

SQLSTATE IM

SQLSTATE Error Can be returned from
IM001 Driver does not support this function All ODBC functions except:
IM002 Data source name not found and no default driver specified
  • SQLBrowseConnect

    (Driver Manager.) The data source name specified in the browse request connection string (InConnectionString) was not found in the system information, nor was there a default driver specification.

    (Driver Manager.) ODBC data source and default driver information could not be found in the system information.

  • SQLConnect

    (Driver Manager.) The data source name specified in the argument ServerName was not found in the system information, nor was there a default driver specification.

  • SQLDriverConnect

    (Driver Manager.) The data source name specified in the connection string (InConnectionString) was not found in the system information, and there was no default driver specification.

    (Driver Manager.) ODBC data source and default driver information could not be found in the system information.

IM003 Specified ODBC driver could not be loaded
  • SQLBrowseConnect

    (Driver Manager.) The ODBC driver listed in the data source specification in the system information or specified by the DRIVER keyword was not found or could not be loaded for some other reason.

  • SQLConnect

    (Driver Manager.) The ODBC driver listed in the data source specification in system information was not found or could not be connected to for some other reason.

  • SQLDriverConnect

    (Driver Manager.) The driver listed in the data source specification in the system information or specified by the DRIVER keyword was not found or could not be loaded for some other reason.

IM004 Driver's SQLAllocHandle on SQL_HANDLE_ENV failed
IM005 Driver's SQLAllocHandle on SQL_HANDLE_DBC failed
IM006 Driver's SQLSetConnectAttr failed
IM007 No data source or driver specified; dialog prohibited
  • SQLDriverConnect

    No data source name or driver was specified in the connection string, and DriverCompletion was SQL_DRIVER_NOPROMPT.

IM008 Dialog failed
  • SQLDriverConnect

    The ODBC driver attempted to display its login dialog box and failed.

    WindowHandle was a null pointer, and DriverCompletion was not SQL_DRIVER_NO_PROMPT.

IM009 Unable to load translation DLL
  • SQLBrowseConnect, SQLDriverConnect

    The ODBC driver was unable to load the translation DLL that was specified for the data source or for the connection.

  • SQLConnect

    The ODBC driver was unable to connect to the translation DLL that was specified for the data source.

  • SQLSetConnectAttr

    The ODBC driver was unable to load the translation DLL that was specified for the connection. This error can be returned only when Attribute is SQL_ATTR_TRANSLATE_LIB.

IM010 Data source name too long
  • SQLBrowseConnect

    (Driver Manager.) The attribute value for the DSN keyword was longer than SQL_MAX_DSN_LENGTH characters.

  • SQLConnect

    (Driver Manager.) *ServerName was longer than SQL_MAX_DSN_LENGTH characters.

  • SQLDriverConnect

    (Driver Manager.) The attribute value for the DSN keyword was longer than SQL_MAX_DSN_LENGTH characters.

IM011 Driver name too long
IM012 DRIVER keyword syntax error
  • SQLBrowseConnect

    (Driver Manager.) The keyword-value pair for the DRIVER keyword contained a syntax error.

  • SQLDriverConnect

    (Driver Manager.) The keyword-value pair for the DRIVER keyword contained a syntax error.

    (Driver Manager.) The string in *InConnectionString contained a FILEDSN keyword, but the .dsn file did not contain a DRIVER keyword or a DSN keyword.

IM013 Trace file error
  • All ODBC functions
IM014 Invalid name of File DSN
  • SQLDriverConnect

    (Driver Manager.) The string in *InConnectionString contained a FILEDSN keyword, but the name of the .dsn file was invalid.

IM015 Corrupt file data source
  • SQLDriverConnect

    (Driver Manager.) The string in *InConnectionString contained a FILEDSN keyword, but the .dsn file was unreadable.