仕様 | DB2 CLI 2.1 |
SQLGetSQLCA() は、SQL ステートメントの作成と実行に関連する SQLCA や、データの取り出し、カーソルのクローズに関連する SQLCA を戻すときに使用します。 SQLCA は、情報のほかに、 SQLError() によって使用可能になるものを戻すこともあります。
注: | SQLGetSQLCA() を、 SQLGetDiagField() と SQLGetDiagRec() の代わりに使用しないでください。 |
SQLCA 構造の詳細な説明については、 SQL 解説書 の SQLCA の付録を参照してください。
ステートメント・ハンドルの割り振りなど、アプリケーション側で関数を厳密に処理する場合は、SQLCA は使用できません。この場合、すべての値をゼロに設定した状態で空 SQLCA が戻されます。
構文
SQLRETURN SQLGetSQLCA (SQLHENV EnvironmentHandle, /* henv */ SQLHDBC ConnectionHandle, /* hdbc */ SQLHSTMT StatementHandle, /* hstmt */ struct sqlca FAR *SqlcaPtr); /* pSqlca */
関数引き数
データ・タイプ | 引き数 | 使用法 | 説明 |
---|---|---|---|
SQLHENV | EnvironmentHandle | 入力 | 環境ハンドル。環境に関連した SQLCA を取得するには、有効な環境ハンドルを渡します。 ConnectionHandle を SQL_NULL_HDBC に設定し、 StatementHandle を SQL_NULL_HSTMT に設定してください。 |
SQLHDBC | ConnectionHandle | 入力 | 接続ハンドル。接続に関連した SQLCA を取得するには、有効なデータベース接続ハンドルを渡し、 StatementHandle を SQL_NULL_HSTMT に設定します。 EnvironmentHandle 引き数は無視されます。 |
SQLHSTMT | StatementHandle | 入力 | ステートメント・ハンドル。ステートメントに関連した SQLCA を取得するには、有効なステートメント・ハンドルを渡します。 EnvironmentHandle 引き数と ConnectionHandle 引き数は、無視されます。 |
SQLCA * | sqlCA | 出力 | SQL 連絡域。 |
使用法
ハンドルは、SQLError() 関数の場合と同じ方法で使用します。以下のものに関連付けられている SQLCA を取得するには、それぞれ次のようにします。
ある DB2 CLI 関数で生成された診断情報が、同じハンドルを指定して SQLError() 以外の関数を呼び出す前に取り出されない場合、直前の関数呼び出しの情報が失われます。このことは、 2 番目の DB2 CLI 関数呼び出しに関する診断情報が生成されるかどうかにかかわらず当てはまります。
DBMS との対話にならない DB2 CLI 関数が呼び出される場合、 SQLCA にはすべてゼロが含まれます。通常、以下の関数には、有用な情報が戻されます。
DB2 ユニバーサル・データベース バージョン 2 以降のサーバーに接続される場合、 SQLCA には、特に関心を向けるべき次の 2 つのフィールドがあります。
この値は、構成キーワードで説明した DB2ESTIMATE 構成キーワード、および SQLSetConnectAttr - 接続属性を設定するの関数説明で説明する SQL_ATTR_DB2ESTIMATE 接続属性と比較される数値です。
注: | SQLERRD(3) および SQLERRD(4) フィールドに戻される情報の正確度は、パラメーター・マーカーの使用のようなさまざまな要素、およびステートメント内のさまざまな式によって異なります。その主な要素のうちで制御可能なものは、データベース統計の正確度です。つまり、統計の最終更新をいつにするかということです (たとえば、
DB2 ユニバーサル・データベースでは、RUNSTATS コマンドの最終実行時にします。)
DB2 CLI バージョン 5 では、デフォルトで据え置き準備がオンになります。対応する実行要求が発行されるまで、PREPARE 要求はサーバーに送られません。つまり、PREPARE に関連する SQLERRD(3) フィールドおよび SQLERRD(4) フィールドのデータは、 SQLPrepare() が呼び出された後、意味を持たなくなります。詳細は デフォルトでの据え置き準備を参照してください。 |
戻りコード
診断
なし。
制約
なし。
(ここで完全サンプル apsqlca.c を使用することもできます 。)
/* From the CLI sample APSQLCA.C */ /* ... */ /* call SQLGetSQLCA */ printf(" Call SQLGetSQLCA and print some SQLCA fields.\n"); sqlrc = SQLGetSQLCA( henv, hdbc, hstmt, &sqlca ) ; HANDLE_CHECK( SQL_HANDLE_STMT, hstmt, sqlrc, &henv, &hdbc ) ;
参照