リターン コード (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 を呼び出して、追加情報 (ある場合) を取得します。 |