返回代码 ODBC

ODBC 中的每个函数都返回一个代码,该代码被称为返回代码,指示函数的总体成功或失败。 程序逻辑通常基于返回代码。

例如,以下代码会调用 SQLFetch 来检索结果集中的行。 它会检查函数的返回代码,以确定是否已达到结果集的末尾(SQL_NO_DATA)、是否返回了任何警告信息(SQL_SUCCESS_WITH_INFO),或者是否发生了错误(SQL_ERROR)。

SQLRETURN   rc;  
SQLHSTMT    hstmt;  
  
while ((rc=SQLFetch(hstmt)) != SQL_NO_DATA) {  
   if (rc == SQL_SUCCESS_WITH_INFO) {  
      // Call function to display warning information.  
   } else if (rc == SQL_ERROR) {  
      // Call function to display error information.  
      break;  
   }  
   // Process row.  
}  

返回代码 SQL_INVALID_HANDLE 始终指示编程错误,并且决不能在运行时遇到。 所有其他返回代码提供运行时信息,但 SQL_ERROR 可以指示编程错误。

下表定义了返回代码。

返回代码 说明
SQL_SUCCESS 函数已成功完成。 应用程序调用 SQLGetDiagField 从标头记录中检索其他信息。
SQL_SUCCESS_WITH_INFO 函数成功完成,可能出现非严重错误(警告)。 应用程序调用 SQLGetDiagRec 或 SQLGetDiagField 来检索其他信息。
SQL_ERROR 函数失败。 应用程序调用 SQLGetDiagRec 或 SQLGetDiagField 来检索其他信息。 函数的任何输出参数的内容均未定义。
SQL_INVALID_HANDLE 由于环境句柄、连接句柄、语句句柄或描述符句柄无效,函数失败。 这表示编程错误。 SQLGetDiagRec 或 SQLGetDiagField 不提供任何其他信息。 仅当句柄为空指针或错误类型时(例如,为需要连接句柄的参数传递语句句柄时),才会返回此代码。
SQL_NO_DATA 没有更多可用数据。 应用程序调用 SQLGetDiagRec 或 SQLGetDiagField 来检索其他信息。 可以返回 02xxx 类中的一个或多个驱动程序定义状态记录。 注意:在 ODBC 2.x 中,此返回代码命名为 SQL_NO_DATA_FOUND。
SQL_NEED_DATA 需要更多数据,例如在执行时发送了参数数据或需要其他连接信息时。 应用程序调用 SQLGetDiagRec 或 SQLGetDiagField 来检索其他信息(如果存在)。
SQL_STILL_EXECUTING 异步启动的函数仍在执行。 应用程序调用 SQLGetDiagRec 或 SQLGetDiagField 来检索其他信息(如果存在)。