MDAC 2.5 SDK - ODBC Programmer's Reference
Chapter 15: Diagnostics
Diagnostic Handling Rules
The following rules govern diagnostic handling in SQLGetDiagRec and SQLGetDiagField.
For all ODBC components:
- Must not replace, alter, or mask errors or warnings received from another ODBC component.
- May add an additional status record when they receive a diagnostic message from another ODBC component. The added record must add real information value to the original message.
For the ODBC component that directly interfaces a data source:
- Must prefix its vendor identifier, its component identifier, and the data source's identifier to the diagnostic message it receives from the data source.
- Must preserve the data source's native error code.
- Must preserve the data source's diagnostic message.
For any ODBC component that generates an error or warning independent of the data source:
- Must supply the correct SQLSTATE for the error or warning.
- Must generate the text of the diagnostic message.
- Must prefix its vendor identifier and its component identifier to the diagnostic message.
- Must return a native error code, if one is available and meaningful.
For the ODBC component that interfaces with the Driver Manager:
- Must initialize the output arguments of SQLGetDiagRec and SQLGetDiagField.
- Must format and return the diagnostic information as output arguments of SQLGetDiagRec and SQLGetDiagField when that function is called.
For one ODBC component other than the Driver Manager:
- Must set the SQLSTATE based on the native error. For file-based drivers and DBMS-based drivers that do not use a gateway, the driver must set the SQLSTATE. For DBMS-based drivers that use a gateway, either the driver or a gateway that supports ODBC may set the SQLSTATE.