CLI の手引きおよび解説書

SQLDescribeParam - パラメーター・マーカーの記述を返す

目的


仕様: 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);

関数引き数

表 48. SQLDescribeParam 引き数
データ・タイプ 引き数 使用法 説明
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_NO_NULLS: ヌル (NULL) は許可しません (これが省略時値です)。
  • SQL_NULLABLE: ヌル (NULL) を許可します。
  • SQL_NULLABLE_UNKNOWN: ヌル (NULL) を許可するかどうかは判別できません。

使用法

パラメーター・マーカーは、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 関数の順序エラーです。 StatementHandleSQLPrepare() または SQLExecDirect() を呼び出す前に、この関数を呼び出しました。

非同期実行関数 (この関数ではない) が StatementHandle で呼び出され、この関数は、呼び出し時に依然実行中でした。

SQLExecute() SQLExecDirect()SQLBulkOperations()、または SQLSetPos()StatementHandle で呼び出され、 SQL_NEED_DATA を戻しました。データがすべての実行時データ・パラメーターまたは列用に送られる前に、この関数が呼び出されました。

HY013 予期しないメモリーのハンドル・エラーが起きました。 基礎メモリー・オブジェクトにアクセスできないため、関数呼び出しを処理できませんでした。メモリー不足状態が原因と考えられます。

制約

なし。

該当するサンプルの一覧については、 sqllib\samples\cli (または sqllib/samples/cli) サブディレクトリー内の README ファイルを参照してください。

参照


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]