仕様: | DB2 CLI 5.0 | ODBC 1.0 | ISO CLI |
SQLDescribeParam() は、準備済み SQL ステートメントに関連したパラメーター・マーカーの記述を返します。この情報は、IPD のフィールドでも使用可能です。
構文
SQLRETURN SQLDescribeParam (SQLHSTMT StatementHandle, SQLUSMALLINT ParameterNumber, SQLSMALLINT *DataTypePtr, SQLUINTEGER *ParameterSizePtr, SQLSMALLINT *DecimalDigitsPtr, SQLSMALLINT *NullablePtr);
関数引き数
データ・タイプ | 引き数 | 使用法 | 説明 |
---|---|---|---|
SQLHSTMT | StatementHandle | 入力 | ステートメント・ハンドル。 |
SQLUSMALLINT | ParameterNumber | 入力 | パラメーター・マーカー番号は、パラメーターの小さい順に配列されていて、1 から始まっています。 |
SQLSMALLINT * | DataTypePtr | 出力 | パラメーターの SQL データ・タイプを返すバッファーを指すポインターです。この値は、IPD の SQL_DESC_CONCISE_TYPE レコード・フィールドから読み取られます。
ColumnNumber が 0 (ブックマーク列の場合) に等しいときは、 SQL_BINARY が変数長ブックマークの *DataTypePtr に返されます。 |
SQLUINTEGER * | ParameterSizePtr | 出力 | データ・ソースで定義されているように、対応するパラメーター・メーカーの列または式のサイズを返すためのバッファーを指すポインターです。 |
SQLSMALLINT | DecimalDigitsPtr | 出力 | データ・ソースで定義されているように、対応するパラメーターの列または式の 10 進数での数を返すためのバッファーを指すポインターです。 |
SQLSMALLINT | NullablePtr | 出力 | パラメーターがヌル (NULL) を許可するかどうかを示す値を返すバッファーを指すパラメーターです。この値は、IPD の
SQL_DESC_NULLABLE フィールドから読み取られます。
以下のどれかになります。
|
使用法
パラメーター・マーカーは、SQL ステートメントに表示される順番に、小さい順にパラメーター番号が付けられます。この番号は 1 から始まっています。
SQLDescribeParam() は、 SQL ステートメントのパラメーターのタイプ (入力、入出力、または出力) は返しません。プロシージャーの呼び出し以外では、 SQL ステートメントにあるパラメーターはすべて入力パラメーターです。プロシージャーの呼び出しでのパラメーターのタイプをそれぞれ判別するために、アプリケーションは SQLProcedureColumns() を呼び出します。
戻りコード
診断
表 49. SQLDescribeParam SQLSTATE
SQLSTATE | 説明 | 解説 |
---|---|---|
01000 | 警告。 | 通知メッセージ。 (関数は、SQL_SUCCESS_WITH_INFO を戻します。) |
07009 | 記述子索引が無効です。 | 引き数 ParameterNumber に指定された値は、1 より小さい値でした。
引き数 ParameterNumber に指定された値は、関連する SQL ステートメントのパラメーターより大きい値でした。
パラメーター・マーカーは、非 DML ステートメントの一部でした。
パラメーター・マーカーは、SELECT リストの一部でした。 |
08S01 | 通信リンクに障害が起きました。 | 関数が処理を完了する前に、DB2 CLI とその接続先データ・ソースとの間の通信リンクが失敗しました。 |
21S01 | 挿入値リストが列リストと一致しません。 | INSERT ステートメントにあるパラメーターの数が、ステートメントで名前の指定された表にある列の数と一致しませんでした。 |
HY000 | 一般的なエラーです。 | 特定の SQLSTATE がなかった場合のエラーが発生しました。 SQLGetDiagRec() により *MessageText バッファーに返されたエラー・メッセージに、そのエラーと原因が記述されています。 |
HY001 | メモリーの割り振り失敗です。 | DB2 CLI は、この関数の実行または完了をサポートするために必要なメモリーを割り当てられませんでした。 |
HY008 | 操作が取り消されました。 | 非同期処理が StatementHandle に対して使用可能になりました。関数が呼び出され、その実行が完了する前に、
SQLCancel() が StatementHandle で呼び出されました。そして、関数が再び StatementHandle で呼び出されました。
関数が呼び出され、その実行が完了する前に、 SQLCancel() が複数スレッドのアプリケーション内の別のスレッドから、 StatementHandle で呼び出されました。 |
HY010 | 関数の順序エラーです。 | StatementHandle の SQLPrepare() または SQLExecDirect() を呼び出す前に、この関数を呼び出しました。
非同期実行関数 (この関数ではない) が StatementHandle で呼び出され、この関数は、呼び出し時に依然実行中でした。
SQLExecute() SQLExecDirect()、SQLBulkOperations()、または SQLSetPos() が StatementHandle で呼び出され、 SQL_NEED_DATA を戻しました。データがすべての実行時データ・パラメーターまたは列用に送られる前に、この関数が呼び出されました。 |
HY013 | 予期しないメモリーのハンドル・エラーが起きました。 | 基礎メモリー・オブジェクトにアクセスできないため、関数呼び出しを処理できませんでした。メモリー不足状態が原因と考えられます。 |
制約
なし。
例
該当するサンプルの一覧については、 sqllib\samples\cli (または sqllib/samples/cli) サブディレクトリー内の README ファイルを参照してください。
参照