目的
仕様: | DB2 CLI 1.1 | ODBC 1.0 | ISO CLI |
SQLFreeStmt() は、ステートメント・ハンドルで参照されているステートメントに関する処理を終了します。以下の目的でこの関数を使用します。
SQL ステートメントを実行して結果を処理した後、SQLFreeStmt() を呼び出します。
構文
SQLRETURN SQLFreeStmt (SQLHSTMT StatementHandle, /* hstmt */ SQLUSMALLINT Option); /* fOption */
関数引き数
データ・タイプ | 引き数 | 使用法 | 説明 |
---|---|---|---|
SQLHSTMT | StatementHandle | 入力 | ステートメント・ハンドル |
SQLUSMALLINT | Option | 入力 | ステートメント・ハンドルの解放の仕方を指定するオプション。このオプションは、以下の値のうちの 1 つでなければなりません。
|
使用法
以下のオプションを指定して SQLFreeStmt() を呼び出すことができます。
SQLCloseCursor() を使用してカーソルをクローズすることもできます。
このオプションは、SQL_HANDLE_STMT の HandleType セットを使用する SQLFreeHandle() 呼び出しと置き換えられました。このバージョンの DB2 CLI でも引き続きこのオプションをサポートしていますが、 SQLFreeHandle() の使用を DB2 CLI プログラムから開始するなら最新の規格に適合できるため、この方法をお勧めします。
SQLFreeStmt() は LOB ロケーターには無効で、 FREE LOCATOR ステートメントを指定して SQLExecDirect() を呼び出し、ロケーターを解放します。 LOB の使用法の詳細については、ラージ・オブジェクトの使用を参照してください。
照会、カタログ関数、または SQLGetTypeInfo() に関連付けられているステートメント・ハンドルが次のようになっているときに、ステートメントを再使用して別のステートメントを実行する方法を示します。
別の方法として、ステートメント・ハンドルを除去し、新しいステートメント・ハンドルを割り振ることができます。
戻りコード
Option を SQL_DROP に設定したときに SQL_SUCCESS_WITH_INFO が返されない理由は、 SQLError() を呼び出すときに使用するステートメント・ハンドルがないことが考えられます。
診断
SQLSTATE | 説明 | 解説 |
---|---|---|
40003 08S01 | 通信リンクに障害が起きました。 | アプリケーションとデータ・ソースとの間の通信リンクが、関数の完了する前に失敗しました。 |
58004 | 予期しないシステム障害です。 | 回復不能システム・エラー。 |
HY001 | メモリーの割り振り失敗です。 | DB2 CLI は、関数の実行または完了をサポートするのに必要なメモリーを割り振ることができません。 |
HY010 | 関数の順序エラーです。 | 実行時データ (SQLParamData()、 SQLPutData()) 操作中に、関数が呼び出されました。 |
HY092 | オプション・タイプが範囲外です。 | 引き数 Option に指定された値は、SQL_CLOSE、 SQL_DROP、SQL_UNBIND、または SQL_RESET_PARAMS のどれでもありませんでした。 |
HY506 | ファイルのクローズ・エラーが起きました。 | 一時ファイルをクローズしようとしているときにエラーが発生しました。 |
許可
なし。
(ここで完全サンプル utilcli.c を使用することもできます 。)
/* From the CLI sample utilcli.c */ /* ... */ sqlrc = SQLFreeStmt( hstmt, SQL_UNBIND ) ; rc = HandleInfoPrint( SQL_HANDLE_STMT, hstmt, sqlrc, __LINE__, __FILE__); if( rc != 0) return(1) ; /* ... */ sqlrc = SQLFreeStmt( hstmt, SQL_CLOSE ) ; rc = HandleInfoPrint( SQL_HANDLE_STMT, hstmt, sqlrc, __LINE__, __FILE__); if( rc != 0) return(1) ;
参照