At the most basic level, a member function either succeeds or fails. At a somewhat more precise level, a function can succeed, but its success may not be what the application developer intended.
For more information about OLE DB return codes, see Return Codes (OLE DB).
When a SQL Server Native Client OLE DB provider member function returns S_OK, the function succeeded.
When a SQL Server Native Client OLE DB provider member function does not return S_OK, the OLE/COM HRESULT-unpacking FAILED and IS_ERROR macros can determine the overall success or failure of a function.
If FAILED or IS_ERROR returns TRUE, the SQL Server Native Client OLE DB provider consumer is assured that member function execution failed. When FAILED or IS_ERROR return FALSE and the HRESULT does not equal S_OK, the SQL Server Native Client OLE DB provider consumer is assured that the function succeeded in some sense. The consumer can retrieve detailed information on this "success with information" return from the SQL Server Native Client OLE DB provider error interfaces. Also, in the case where a function clearly fails (the FAILED macro returns TRUE), extended error information is available from the SQL Server Native Client OLE DB provider error interfaces.
SQL Server Native Client OLE DB provider consumers commonly encounter the DB_S_ERRORSOCCURRED "success with information" HRESULT return. Typically, member functions that return DB_S_ERRORSOCCURRED define one or more parameters that deliver status values to the consumer. No error information may be available to the consumer other than that returned in status-value parameters, so consumers should implement application logic to retrieve status values when they are available.
The SQL Server Native Client OLE DB provider member functions do not return the success code S_FALSE. All SQL Server Native Client OLE DB provider member functions always return S_OK to indicate success.