Share via


リターン コード (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 から追加情報を入手できません。 このコードは、ハンドルが null ポインターであるか、接続ハンドルを必要とする引数にステートメント ハンドルが渡された場合など、間違った型である場合にのみ返されます。
SQL_NO_DATA これ以上のデータはありませんでした。 アプリケーションは、SQLGetDiagRec または SQLGetDiagField を呼び出して追加情報を取得します。 クラス 02xxx の 1 つ以上のドライバー定義状態レコードが返される場合があります。 注: ODBC 2 x には、このリターン コードには SQL_NO_DATA_FOUND という名前が付けられています。
SQL_NEED_DATA 実行時にパラメーター データが送信されたときや追加の接続情報が必要な場合など、さらに多くのデータが必要です。 アプリケーションは SQLGetDiagRec または SQLGetDiagField を呼び出して、追加情報 (ある場合) を取得します。
SQL_STILL_EXECUTING 非同期的に開始された関数は、まだ実行中です。 アプリケーションは SQLGetDiagRec または SQLGetDiagField を呼び出して、追加情報 (ある場合) を取得します。