仕様: | DB2 CLI 5.0 | ODBC 3.0 | ISO CLI |
SQLSetDescField() は、記述子レコードの単一フィールドの値を設定します。
構文
SQLRETURN SQLSetDescField (SQLHDESC DescriptorHandle, SQLSMALLINT RecNumber, SQLSMALLINT FieldIdentifier, SQLPOINTER ValuePtr, SQLINTEGER BufferLength);
関数引き数
データ・タイプ | 引き数 | 使用法 | 説明 |
---|---|---|---|
SQLHDESC | DescriptorHandle | 入力 | 記述子ハンドル。 |
SQLSMALLINT | RecNumber | 入力 | アプリケーションが設定しようとしているフィールドを含んでいる記述子レコードを示します。記述子レコードは 0 から数え、レコード番号 0 がブックマーク・レコードになります。 RecNumber 引き数は、ヘッダー・フィールドの場合には無視されます。 |
SQLSMALLINT | FieldIdentifier | 入力 | 値を設定しようとしている記述子のフィールドを示します。詳細については、『FieldIdentifier 引き数』を参照してください。 |
SQLPOINTER | ValuePtr | 入力 | 記述子情報が入っているバッファーへのポインター、または 4 バイトからなる値。データ・タイプは、FieldIdentifier の値により異なります。 ValuePtr が 4 バイトからなる値である場合、FieldIdentifier 引き数の値に応じて、その 4 バイトすべてが使われるか、あるいは 4 バイトのうち 2 つだけが使われます。 |
SQLINTEGER | BufferLength | 入力 | FieldIdentifier が ODBC で定義されたフィールドであり、かつ ValuePtr が文字ストリングか 2 進数バッファーを指している場合、この引き数は *ValuePtr の長さでなければなりません。また、FieldIdentifier が ODBC で定義されたフィールドであり、かつ ValuePtr が整数である場合には、BufferLength は無視されます。
FieldIdentifier がドライバーで定義されたフィールドである場合には、アプリケーションは BufferLength 引き数を設定してそのフィールドの性質を示します。 BufferLength には次の値が有効です。
|
使用法
アプリケーションは SQLSetDescField() を呼び出すことにより、任意の記述子フィールドを一度に 1 つずつ設定できます。 SQLSetDescField() への 1 回の呼び出しで、単一の記述子にある単一のフィールドを設定します。この関数を呼び出すことにより、対象となるフィールドが設定可能なものであれば、任意の記述子タイプにおける任意のフィールドを設定できます (このセクションで後ほど示される表を参照)。
注: | SQLSetDescField() への呼び出しが失敗した場合、 RecNumber 引き数に示された記述子レコードの内容は定義されません。 |
他の関数を呼び出して設定を行うと、関数の 1 回の呼び出しで複数の記述子フィールドを設定することが可能です。 SQLSetDescRec() 関数は、列やパラメーターにバインドされたデータ・タイプおよびバッファーに影響する様々なフィールド (TYPE、 DATETIME_INTERVAL_CODE、OCTET_LENGTH、 PRECISION、SCALE、 DATA_PTR、OCTET_LENGTH_PTR、および INDICATOR_PTR) を設定します。また、SQLBindCol() や SQLBindParameter() を使用すれば、列やパラメーターをバインドするための完全な仕様を作成できます。これらの関数は 1 回の関数呼び出しで、特定のグループの記述子フィールドを設定します。
SQLSetDescField() を呼び出せば、バインド用ポインター (SQL_DESC_DATA_PTR、SQL_DESC_INDICATOR_PTR、または SQL_DESC_OCTET_LENGTH_PTR) へのオフセットを追加することにより、バインド用バッファーを変更できます。この関数は、SQLBindCol() や SQLBindParameter() を呼び出すことなくバインド用バッファーを変更します。これにより、アプリケーションは他のフィールド、たとえば SQL_DESC_DATA_TYPE を変更することなく SQL_DESC_DATA_PTR を変更することが可能です。
記述子のヘッダー・フィールドの設定は、 RecNumber を 0 にして SQLSetDescField() を呼び出し、さらに適切な FieldIdentifier を呼び出して行います。多くのヘッダー・フィールドにはステートメント属性が入っていますが、それらも SQLSetStmtAttr() への呼び出しで設定できます。これにより、アプリケーションは最初に記述子ハンドルを取得することなく、ステートメント属性を設定することが可能です。 RecNumber の 0 は、ブックマーク・フィールドの設定にも使用します。
注: | ステートメント属性 SQL_ATTR_USE_BOOKMARKS は常に、 SQLSetDescField() を呼び出してブックマーク・フィールドを設定する前に設定しなければなりません。これは必須ではありませんが、強くお勧めします。 |
SQLSetDescField() を呼び出して記述子フィールドを設定する場合、アプリケーションは以下に示す特定の順序に従う必要があります。
記述子を割り当てる時点で、その記述子内のフィールドは省略時値に初期設定したり、省略時値なしで初期設定したり、あるいは記述子のタイプを定義しないでおくことができます。以下の表は、記述子のタイプごとの初期設定が示されています。 "D" はそのフィールドが省略時値で初期設定されることを、また "ND" はそのフィールドが省略時値なしで初期設定されることを意味します。数字が示されている場合は、その数字がフィールドの省略時値です。この表にはまた、フィールドが読み取り / 書き込み (R/W) であるか、読み取り専用 (R) であるかも示されています。
IRD のフィールドに省略時値があるのは、ステートメントが作成または実行され、その IRD が移植された後だけであり、ステートメントのハンドルまたは記述子が割り当てられた時点ではありません。 IRD が移植されてしまうまでは、IRD のフィールドにアクセスしようとするとエラーが返されます。
一部の記述子フィールドは、 1 つまたは複数 (ただし全部ではない) の記述子タイプに対して定義されます (ARD と IRD、および APD と IPD)。フィールドを記述子のタイプに対して定義していないと、どの関数もその記述子を使用する必要がなくなります。記述子は実際のデータ構造ではなく、データの論理視点であるため、これらの余分のフィールドは定義済みフィールドに対して何の影響もありません (詳しくは、 記述子の使用を参照)。
SQLGetDescField() がアクセスできるフィールドは必然的に、 SQLSetDescField() では設定できません。 SQLSetDescField() が設定できるフィールドは、以下の表に示されています。
ヘッダー・フィールドの初期設定は次のとおりです。
SQL_DESC_ALLOC_TYPE (SQLSMALLINT) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_ARRAY_SIZE (SQLUINTEGER) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_ARRAY_STATUS_PTR (SQLUSMALLINT *) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_BIND_OFFSET_PTR (SQLINTEGER *) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_BIND_TYPE (SQLINTEGER) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_COUNT (SQLSMALLINT) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_ROWS_PROCESSED_PTR (SQLUINTEGER *) | |||
R/W: |
| 省略時値: |
|
レコード・フィールドの初期設定は次のとおりです。
SQL_DESC_AUTO_UNIQUE_VALUE (SQLINTEGER) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_BASE_COLUMN_NAME (SQLCHAR *) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_BASE_TABLE_NAME (SQLCHAR *) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_CASE_SENSITIVE (SQLINTEGER) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_CATALOG_NAME (SQLCHAR *) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_CONCISE_TYPE (SQLSMALLINT) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_DATA_PTR (SQLPOINTER) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_DATETIME_INTERVAL_CODE (SQLSMALLINT) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_DATETIME_INTERVAL_PRECISION (SQLINTEGER) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_DISPLAY_SIZE (SQLINTEGER) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_FIXED_PREC_SCALE (SQLSMALLINT) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_INDICATOR_PTR (SQLINTEGER *) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_LABEL (SQLCHAR *) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_LENGTH (SQLUINTEGER) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_LITERAL_PREFIX (SQLCHAR *) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_LITERAL_SUFFIX (SQLCHAR *) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_LOCAL_TYPE_NAME (SQLCHAR *) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_NAME (SQLCHAR *) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_NULLABLE (SQLSMALLINT) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_NUM_PREC_RADIX (SQLINTEGER) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_OCTET_LENGTH (SQLINTEGER) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_OCTET_LENGTH_PTR (SQLINTEGER *) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_PARAMETER_TYPE (SQLSMALLINT) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_PRECISION (SQLSMALLINT) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_SCALE (SQLSMALLINT) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_SCHEMA_NAME (SQLCHAR *) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_SEARCHABLE (SQLSMALLINT) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_TABLE_NAME (SQLCHAR *) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_TYPE (SQLSMALLINT) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_TYPE_NAME (SQLCHAR *) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_UNNAMED (SQLSMALLINT) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_UNSIGNED (SQLSMALLINT) | |||
R/W: |
| 省略時値: |
|
SQL_DESC_UPDATABLE (SQLSMALLINT) | |||
R/W: |
| 省略時値: |
|
FieldIdentifier 引き数は、設定する記述子フィールドを示します。記述子には、ヘッダー・フィールド (次の項で説明) からなる記述子ヘッダーと、レコード・フィールド (この後の項で説明) からなる 0 個以上の記述子レコードとが含まれています。
各記述子には、以下のフィールドからなるヘッダーがあります。
SQL_DESC_ALLOC_TYPE [すべて] この読み取り専用の SQLSMALLINT ヘッダー・フィールドには、記述子が DB2 CLI によって自動的に割り当てられたか、あるいはアプリケーションにより明示的に割り当てられたかが指定されます。アプリケーションはこのフィールドを取得することはできますが、変更はできません。記述子が自動的に割り当てられた場合には、このフィールドは SQL_DESC_ALLOC_AUTO に設定されます。また、アプリケーションにより明示的に割り当てられた場合には SQL_DESC_ALLOC_USER に設定されます。
SQL_DESC_ARRAY_SIZE [アプリケーション記述子] ARD においては、この SQLUINTEGER ヘッダー・フィールドには行セットの行数が指定されます。これは SQLFetch()、SQLFetchScroll()、または SQLSetPos() への呼び出しにより返される行の数です。省略時値は 1 です。このフィールドは、SQL_ATTR_ROW_ARRAY_SIZE ステートメント属性によっても設定されます。
APD においては、この SQLUINTEGER ヘッダー・フィールドには各パラメーターごとの値の数が指定されます。
このフィールドの省略時値は 1 です。 SQL_DESC_ARRAY_SIZE が 1 よりも大きい場合は、APD または ARD の SQL_DESC_DATA_PTR、 SQL_DESC_INDICATOR_PTR、および SQL_DESC_OCTET_LENGTH_PTR は配列を指しています。各配列のカーディナリティーは、このフィールドの値と同等です。
ARD 内のこのフィールドは、 SQL_ATTR_ROWSET_SIZE 属性とともに SQLSetStmtAttr() を呼び出すことによっても設定できます。 APD 内のこのフィールドは、 SQL_ATTR_PARAMSET_SIZE 属性とともに SQLSetStmtAttr() を呼び出すことによっても設定できます。
SQL_DESC_ARRAY_STATUS_PTR [すべて] この SQLUSMALLINT * ヘッダー・フィールドは記述子タイプごとに、 SQLUSMALLINT 値の配列を指しています。これらの配列は次のような名前になっています。
IRD においては、このヘッダー・フィールドは SQLFetch()、SQLFetchScroll()、または SQLSetPos() への呼び出しの後の状況値が入っている、行状況配列を指します。この配列の要素の数は、行セット内にある行の数と同じです。アプリケーションは SQLUSMALLINT の配列を割り当てて、このフィールドがその配列を指すように設定しなければなりません。省略時設定では、このフィールドはヌル・ポインターに設定されます。 SQL_DESC_ARRAY_STATUS_PTR フィールドがヌル・ポインターに設定されていない限り、 DB2 CLI は配列を移植しますが、これが行われるのは、状況値が生成されておらず、配列が移植されていない場合です。
注: | 指し示される行状況配列の要素を、アプリケーションが IRD の SQL_DESC_ARRAY_STATUS_PTR フィールドによって設定する場合の動作は定義されていません。その配列は最初、SQLFetch()、SQLFetchScroll()、または SQLSetPos() への呼び出しによって移植されます。この呼び出しが SQL_SUCCESS または SQL_SUCCESS_WITH_INFO を返さなかった場合は、該当するフィールドによって指し示されているその配列の内容は定義されていません。 |
配列内の要素には、以下の値を入れることができます。
ARD 内のこのフィールドは、 SQL_ATTR_ROW_STATUS_PTR 属性とともに SQLSetStmtAttr() を呼び出すことによっても設定できます。
IPD においては、このヘッダー・フィールドは SQLExecute() または SQLExecDirect() への呼び出し後、パラメーター値のセットごとの状況情報が入っているパラメーター状況配列を指しています。 SQLExecute() または SQLExecDirect() への呼び出しが SQL_SUCCESS または SQL_SUCCESS_WITH_INFO を返さなかった場合は、該当するフィールドによって指し示されているその配列の内容は定義されていません。アプリケーションは SQLUSMALLINT の配列を割り当てて、このフィールドがその配列を指すように設定しなければなりません。 SQL_DESC_ARRAY_STATUS_PTR フィールドがヌル・ポインターに設定されていない限り、ドライバーは配列を移植しますが、これが行われるのは、状況値が生成されておらず、配列が移植されていない場合です。
配列内の要素には、以下の値を入れることができます。
APD 内のこのフィールドは、 SQL_ATTR_PARAM_STATUS_PTR 属性とともに SQLSetStmtAttr() を呼び出すことによっても設定できます。
ARD においては、このヘッダー・フィールドは、対象となる行を SQLSetPos() 操作で無視するかどうかを示すためにアプリケーションが設定できる値の、行操作配列を指します。
配列内の要素には、以下の値を入れることができます。
この配列の要素が 1 つも設定されていないと、すべての行がバルク操作に組み込まれます。また、ARD の SQL_DESC_ARRAY_STATUS_PTR フィールド内にある値がヌル・ポインターである場合は、すべての行がバルク操作に組み込まれます。その変換処理は、ポインターが有効な配列を指していて、配列のすべての要素が SQL_ROW_PROCEED である場合と同じです。配列中のある要素が SQL_ROW_IGNORE に設定されていると、無視される行に対する行状況配列の値は変更されません。
ARD 内のこのフィールドは、 SQL_ATTR_ROW_OPERATION_PTR 属性とともに SQLSetStmtAttr() を呼び出すことによっても設定できます。
APD においては、このヘッダー・フィールドは、該当するパラメーターのセットが SQLExecute() または SQLExecDirect() の呼び出し時に無視されるかどうかを示すためにアプリケーションが設定できる、値のパラメーター操作配列を指しています。配列内の要素には、以下の値を入れることができます。
この配列の要素が 1 つも設定されていないと、配列内のすべてのパラメーターのセットが SQLExecute() または SQLExecDirect() 呼び出しで使用されます。また、APD の SQL_DESC_ARRAY_STATUS_PTR フィールド内にある値がヌル・ポインターである場合は、すべてのパラメーターのセットが使用されます。その変換処理は、ポインターが有効な配列を指していて、配列のすべての要素が SQL_PARAM_PROCEED である場合と同じです。
APD 内のこのフィールドは、 SQL_ATTR_PARAM_OPERATION_PTR 属性とともに SQLSetStmtAttr() を呼び出すことによっても設定できます。
SQL_DESC_BIND_OFFSET_PTR [アプリケーション記述子] この SQLINTEGER * ヘッダー・フィールドは、バインド・オフセットを指します。省略時設定では、これはヌル・ポインターに設定されます。このフィールドがヌル・ポインターではない場合、DB2 CLI はそのポインターを参照解除して、フェッチ時の記述子レコードの中に NULL 以外の値が入っている据え置きフィールド (SQL_DESC_DATA_PTR、 SQL_DESC_INDICATOR_PTR、および SQL_DESC_OCTET_LENGTH_PTR) のそれぞれに、その参照解除された値を追加します。そして、この新しいポインター値をバインド時に使用します。
バインド・オフセットは常に、SQL_DESC_DATA_PTR、 SQL_DESC_INDICATOR_PTR、および SQL_DESC_OCTET_LENGTH_PTR フィールド内の値へ直接追加されます。そのオフセットが別の値に変更されると、この新しい値はそのまま各記述子フィールドの値に直接追加されます。新しいオフセットはフィールド値だけでなく、それ以前のどのオフセットにも追加されません。
このフィールドは据え置きフィールド です。これは設定時には使用されませんが、後で DB2 CLI によりデータを検索するのに使用されます。
ARD 内のこのフィールドは、 SQL_ATTR_ROW_BIND_OFFSET_PTR 属性とともに SQLSetStmtAttr() を呼び出すことによっても設定できます。 ARD 内のこのフィールドは、 SQL_ATTR_PARAM_BIND_OFFSET_PTR 属性とともに SQLSetStmtAttr() を呼び出すことによっても設定できます。
行方向のバインドについては、『SQLFetchScroll』および『SQLBindParameter』の項にある説明を参照してください。
SQL_DESC_BIND_TYPE [アプリケーション記述子] この SQLINTEGER ヘッダー・フィールドは、バインド方向を列またはパラメーターのいずれかのバインドに使用するよう設定します。
ARD においては、このフィールドは関連しているステートメント・ハンドルに対する SQLFetchScroll() の呼び出し時に、バインド方向を指定します。
列に対して列方向のバインドを選択するには、このフィールドを SQL_BIND_BY_COLUMN (省略時値) に設定します。
ARD 内のこのフィールドは、 SQL_ATTR_ROW_BIND_TYPE 属性とともに SQLSetStmtAttr() を呼び出すことによっても設定できます。
APD においては、このフィールドは動的パラメーターに対して使用するバインド方向を指定します。
パラメーターに対して列方向のバインドを選択するには、このフィールドを SQL_BIND_BY_COLUMN (省略時値) に設定します。
APD 内のこのフィールドは、 SQL_ATTR_PARAM_BIND_TYPE 属性とともに SQLSetStmtAttr() を呼び出すことによっても設定できます。
SQL_DESC_COUNT [すべて] この SQLSMALLINT ヘッダー・フィールドは、データが入っているレコードのうち最も番号の大きいレコードの 1 を基数とした指標を指定します。 DB2 CLI は、記述子に対してデータ構造を設定するときに、どれだけの数のレコードが有効であるかを示すよう COUNT フィールドも設定しなければなりません。アプリケーションがこのデータ構造のインスタンスを割り当てるときには、どれだけの数のレコードのために場所を予約しておくかをそのアプリケーションが指定する必要はありません。アプリケーションがレコードの内容を指定すると、記述子ハンドルに適切なサイズのデータ構造を確実に参照させるために必要な処置を DB2 CLI が行います。
SQL_DESC_COUNT は、バインドされるすべてのデータ列 (フィールドが ARD にある場合) またはバインドされるすべてのパラメーター (フィールドが APD にある場合) のカウントではなく、レコードのうち最も番号が大きいレコードの番号です。最も番号が大きい列の番号よりも小さい番号が付いた列またはパラメーターが (ヌル・ポインターに設定された Target ValuePtr 引き数のある SQLBindCol()、またはヌル・ポインターに設定された Parameter ValuePtr 引き数のある SQLBindParameter() を呼び出すことにより) アンバインドされている場合には、 SQL_DESC_COUNT は変更されません。追加の列やパラメーターが、データが入っているレコードのうち最も番号が大きいレコードよりも大きな番号でバインドされた場合は、 DB2 CLI が自動的に SQL_DSEC_COUNT フィールドにある値を増やします。すべての列またはパラメーターが、 SQL_UNBIND オプションを指定した SQLFreeStmt() の呼び出しによりアンバインドされた場合には、 SQL_DESC_COUNT は 0 に設定されます。
SQL_DESC_COUNT の値は、アプリケーションが SQLSetDescField() を呼び出すことにより明示的に設定することができます。 SQL_DESC_COUNT の値を明示的に減少させると、 SQL_DESC_COUNT の新しい値より大きい番号のレコードはすべて除去され、その列はアンバインドされます。 SQL_DESC_COUNT の値が明示的に 0 に設定されると、そのフィールドが APD になっている場合は、すべてのパラメーター列がアンバインドされます。 SQL_DESC_COUNT の値が明示的に 0 に設定されると、そのフィールドが ARD になっている場合は、バインド済みブックマーク列以外のすべてのデータ・バッファーが解放されます。
ARD のこのフィールド内にあるレコード・カウントには、バインド済みブックマーク列は含まれません。
SQL_DESC_ROWS_PROCESSED_PTR [実装記述子] IRD においては、この SQLUINTEGER * ヘッダー・フィールドは SQLFetch() または SQLFetchScroll() への呼び出しの後にフェッチされた行の数が入っている、あるいは SQLSetPos() への呼び出しによって実行されるバルク操作で影響を受ける行の数が入っているバッファーを指します。
IPD においては、この SQLUINTEGER * ヘッダー・フィールドはパラメーターの各行の処理時における行の番号が入っているバッファーを指しています。これがヌル・ポインターであれば、行番号は返されません。
SQL_DESC_ROWS_PROCESSED_PTR が有効であるのは、 SQLFetch() または SQLFetchScroll() (IRD フィールドの場合) 、もしくは SQLExecute() または SQLExecDirect() (IPD フィールドの場合) への呼び出しの後に、 SQL_SUCCESS または SQL_SUCCESS_WITH_INFO が返されている場合だけです。戻りコードが上記のいずれでもない場合は、 SQL_DESC_ROWS_PROCESSED_PTR が指しているロケーションは未定義です。このフィールドが指しているバッファーに入っている呼び出しが SQL_SUCCESS または SQL_SUCCESS_WITH_INFO を返さなかった場合、バッファーの内容は SQL_NO_DATA が返されない限りは未定義であり、その場合にはバッファー内の値は 0 に設定されます。
ARD 内のこのフィールドは、 SQL_ATTR_ROWS_FETCHED_PTR 属性とともに SQLSetStmtAttr() を呼び出すことによっても設定できます。 ARD 内のこのフィールドは、 SQL_ATTR_PARAMS_PROCESSED_PTR 属性とともに SQLSetStmtAttr() を呼び出すことによっても設定できます。
このフィールドが指しているバッファーは、アプリケーションによって割り当てられます。これは、DB2 CLI により設定される据え置き出力バッファーです。省略時設定では、これはヌル・ポインターに設定されます。
各記述子には 1 つまたは複数のレコードが含まれており、それらのレコードは記述子のタイプによって列データまたは動的パラメーターのいずれかを定義するフィールドから構成されています。また各レコードは、単一の列またはパラメーターを完全に定義したものです。
SQL_DESC_AUTO_UNIQUE_VALUE [IRD] この読み取り専用の SQLINTEGER レコード・フィールドには、列が自動増分列である場合には SQL_TRUE が、または列が自動増分列でない場合には SQL_FALSE が入ります。このフィールドは読み取り専用ですが、基礎になっている自動増分列は必ずしも読み取り専用ではありません。
SQL_DESC_BASE_COLUMN_NAME [IRD] この読み取り専用の SQLCHAR レコード・フィールドには、結果セット列のための基本列名が入っています。基本列名が存在しない場合 (列が式になっている場合など) は、この変数には空ストリングが入ります。
SQL_DESC_BASE_TABLE_NAME [IRD] この読み取り専用の SQLCHAR レコード・フィールドには、結果セット列のための基本表名が入っています。基本表名が定義できないか適用不能である場合、この変数には空ストリングが入ります。
SQL_DESC_CASE_SENSITIVE [実装記述子] この読み取り専用の SQLINTEGER レコード・フィールドには、照合または比較において列またはパラメーターがケース・センシティブとして扱われる場合には SQL_TRUE が、あるいは照合または比較において列がケース・センシティブとして扱われない場合や文字以外の列である場合には SQL_FALSE がそれぞれ入れられます。
SQL_DESC_CATALOG_NAME [IRD] この読み取り専用の SQLCHAR レコード・フィールドには、該当する列が入れられる基本表のカタログ名または修飾子名が入っています。戻り値は、その列が式であるか視点の一部である場合には、ドライバーによって異なります。データ・ソースがカタログ (または修飾子) をサポートしていないか、カタログ名または修飾子名が判別できない場合は、この変数には空ストリングが入れられます。
SQL_DESC_CONCISE_TYPE [すべて] この SQLSMALLINT ヘッダー・フィールドは、すべてのデータ・タイプ (日時およびインターバルといったデータ・タイプを含む) に対するコンサイス・データ・タイプを指定します。
SQL_DESC_CONCISE_TYPE および SQL_DESC_TYPE フィールドの値は相互に依存しています。一方のフィールドを設定するたびに、もう一方のフィールドも設定しなければなりません。 SQL_DESC_CONCISE_TYPE は、SQLBindCol() または SQLBindParameter()、あるいは SQLSetDescField() への呼び出しにより設定できます。 SQL_DESC_TYPE は、 SQLSetDescField() または SQLSetDescRec() への呼び出しにより設定できます。
SQL_DESC_CONCISE_TYPE をインターバルまたは日時以外のデータ・タイプに設定すると、 SQL_DESC_TYPE フィールドはそれと同じ値に設定され、 SQL_DESC_DATETIME_INTERVAL_CODE フィールドは 0 に設定されます。
SQL_DESC_CONCISE_TYPE をインターバルまたは日時コンサイス・データ・タイプに設定すると、 SQL_DESC_TYPE フィールドはそれに対応する冗長タイプ (SQL_DATETIME または SQL_INTERVAL) に設定され、 SQL_DESC_DATETIME_INTERVAL_CODE フィールドは適切なサブコードに設定されます。
SQL_DESC_DATA_PTR [アプリケーション記述子および IPD] この SQLPOINTER レコード・フィールドは、パラメーター値 (APD の場合) または列値 (ARD の場合) が入れられる変数を指します。記述子レコード (および、それが表す列またはパラメーターのいずれか) は、 SQLBindCol() または SQLBindParameter() のいずれかへの呼び出し内の TargetValuePtr がヌル・ポインターであるか、 SQLSetDescField() または SQLSetDescRec() への呼び出し内の SQL_DESC_DATA_PTR フィールドがヌル・ポインターに設定されると、アンバインドされます。 SQL_DESC_DATA_PTR フィールドがヌル・ポインターに設定されていれば他のフィールドは影響されません。このフィールドが指しているバッファーに入っている SQLFetch() または SQLFetchScroll() が SQL_SUCCESS または SQL_SUCCESS_WITH_INFO を返さなかった場合、そのバッファーの内容は未定義です。
このフィールドは据え置きフィールドです。これは設定時には使用されませんが、後で DB2 CLI によりデータを検索するのに使用されます。
SQL_DESC_DATA_PTR フィールドが設定されると、 DB2 CLI はいつでも SQL_DESC_TYPE フィールド内の値に含まれている DB2 CLI または ODBC データ・タイプが正しいかどうか、さらにそのデータ・タイプに影響する他のすべてのフィールドの整合性が保たれているかを検査します。 『整合性検査』を参照してください。
SQL_DESC_DATETIME_INTERVAL_CODE [すべて] この SQLSMALLINT レコード・フィールドには、 SQL_DESC_TYPE フィールドが SQL_DATETIME である場合の、特定の日時データ・タイプに対するサブコードが入っています。これは、SQL および C の両方のデータ・タイプにおいて当てはまります。
このフィールドは、日時データ・タイプに対して以下のように設定できます。
日時のタイプ | DATETIME_INTERVAL_CODE |
---|---|
SQL_TYPE_DATE/SQL_C_TYPE_DATE | SQL_CODE_DATE |
SQL_TYPE_TIME/SQL_C_TYPE_TIME | SQL_CODE_TIME |
SQL_TYPE_TIMESTAMP/ SQL_C_TYPE_TIMESTAMP | SQL_CODE_TIMESTAMP |
このフィールドは、インターバル・データ・タイプに対しては DB2 CLI がサポートしていない他の値 (ここには示されていません) に設定することもできます。
SQL_DESC_DATETIME_INTERVAL_PRECISION [すべて] この SQLINTEGER レコード・フィールドには、 TYPE フィールドが SQL_INTERVAL (DB2 CLI はサポートしていない) になっている場合には、インターバル先行精度が入っています。
SQL_DESC_DISPLAY_SIZE [IRD] この読み取り専用の SQLINTEGER レコード・フィールドには、列からのデータを表示するのに必要な最大文字数が入っています。このフィールド内の値は記述子フィールド LENGTH と同じではありません。それは、この LENGTH フィールドはすべての数値タイプに対して未定義であるためです。
SQL_DESC_FIXED_PREC_SCALE [実装記述子] この読み取り専用の SQLSMALLINT レコード・フィールドは、列が正確な数値列であり、精度が固定されていて位取りがゼロ以外である (MONEY データ・タイプなど) 場合には SQL_TRUE に、また列が正確な数値列ではなく、精度と位取りが固定されていない場合には SQL_FALSE に設定されます。
SQL_DESC_INDICATOR_PTR [アプリケーション記述子] ARD においては、この SQLINTEGER * レコード・フィールドは標識変数を指します。この変数には、列値が NULL である場合は SQL_NULL_DATA が入れられます。 APD の場合、この標識変数は SQL_NULL_DATA に設定され、 NULL 動的引き数が指定されます。それ以外の場合には、この変数はゼロです (SQL_DESC_INDICATOR_PTR および SQL_DESC_OCTET_LENGTH_PTR の値が同じポインターである場合を除く)。
ARD 内の SQL_DESC_INDICATOR_PTR フィールドがヌル・ポインターである場合、 DB2 CLI は列が NULL であるかどうかの情報を返すことができなくなります。列が NULL であり、INDICATOR_PTR がヌル・ポインターである場合は、 DB2 CLI が SQLFetch() または SQLFetchScroll() への呼び出し後にバッファーを移植しようとする時点で、 SQLSTATE 22002、「標識変数が必要だが指定されていない (Indicator variable required but not supplied)」が返されます。 SQLFetch() または SQLFetchScroll() への呼び出しが SQL_SUCCESS または SQL_SUCCESS_WITH_INFO を返さなかった場合、バッファーの内容は定義されていません。
SQL_DESC_INDICATOR_PTR フィールドは、 SQL_DESC_OCTET_LENGTH_PTR が指しているフィールドが設定されているかどうかを判別します。ある列のデータ値が NULL になっていると、DB2 CLI はその標識変数を SQL_NULL_DATA に設定します。 SQL_DESC_OCTET_LENGTH_PTR が指しているフィールドはその時点では設定されません。フェッチの途中で NULL 値が検出されなければ、 SQL_DESC_INDICATOR_PTR が指しているバッファーはゼロに設定され、 SQL_DESC_OCTET_LENGTH_PTR が指しているバッファーはデータの長さに設定されます。
APD 内にある INDICATOR_PTR フィールドがヌル・ポインターである場合、アプリケーションはこの記述子レコードを使って NULL 引き数を指定することができません。
このフィールドは据え置きフィールドです。これは設定時には使用されませんが、後で DB2 CLI によりデータを格納するのに使用されます。
SQL_DESC_LABEL [IRD] この読み取り専用の SQLCHAR レコード・フィールドには、列ラベルまたは列タイトルが入っています。列にラベルがない場合、この変数には列名が入れられます。列に名前やラベルが付けられていないと、この変数には空ストリングが入れられます。
SQL_DESC_LENGTH [すべて] この SQLUINTEGER レコード・フィールドは、文字ストリングの最大もしくは実際の文字長か、あるいは 2 進データ・タイプです。これは、固定長データ・タイプの最大文字長であるか、可変長データ・タイプの実際の文字長となります。その値からは常に、文字ストリングの終わりを示すヌル終了文字が除かれています。このフィールドは文字数を示しており、バイト数を示しているのではない点に注意してください。
このフィールド内の値は、DB2 CLI バージョン 2 で定義された長さの値とは異なっている場合があります。
SQL_DESC_LITERAL_PREFIX [IRD] この読み取り専用の SQLCHAR レコード・フィールドには、 DB2 CLI がこのデータ・タイプのリテラルにおける接頭部として認識する 1 つまたは複数の文字が入っています。リテラルの接頭部が適用不能であるデータ・タイプに対しては、この変数に空ストリングが入れられます。
SQL_DESC_LITERAL_SUFFIX [IRD] この読み取り専用の SQLCHAR レコード・フィールドには、 DB2 CLI がこのデータ・タイプのリテラルにおける接尾部として認識する 1 つまたは複数の文字が入っています。リテラルの接尾部が適用不能であるデータ・タイプに対しては、この変数に空ストリングが入れられます。
SQL_DESC_LOCAL_TYPE_NAME [実装記述子] この読み取り専用の SQLCHAR レコード・フィールドには、データ・タイプのローカライズされた (ネイティブ言語の) 名前が入れられます。この名前は、データ・タイプの正規名とは異なることがあります。ローカライズされた名前がない場合は、空ストリングが返されます。このフィールドは、表示の目的においてのみ使用されます。
SQL_DESC_NAME [実装記述子] 行の記述子内にあるこの SQLCHAR レコード・フィールドには、列の別名が入れられます (該当する場合)。列の別名が適用されない場合には、列名が返されます。いずれの場合でも、UNNAMED フィールドは SQL_NAMED に設定されます。列名も列の別名もなければ、NAME フィールドには空ストリングが返され、 UNNAMED フィールドは SQL_UNNAMED に設定されます。
アプリケーションは IPD の SQL_DESC_NAME フィールドをパラメーター名やその別名に設定して、ストアード・プロシージャーのパラメーターを名前で指定することができます。 IRD の SQL_DESC_NAME フィールドは読み取り専用フィールドであるため、アプリケーションがそのフィールドを設定しようとすると SQLSTATE HY091 (記述子のフィールド識別子が無効 (Invalid descriptor field identifier)) が返されます。
IPD においては、このフィールドは動的パラメーターがサポートされていない場合、未定義になります。名前付きパラメーターがサポートされており、そのバージョンの DB2 CLI でパラメーターの記述ができるようになっている場合は、このフィールドにはパラメーター名が返されます。
列名値は環境属性 SQL_ATTR_USE_LIGHT_OUTPUT_SQLDA の影響を受ける場合があります。詳細については、 SQLSetEnvAttr - 環境属性を設定するを参照してください。
SQL_DESC_NULLABLE [実装記述子] IRD において、この読み取り専用の SQLSMALLINT レコード・フィールドは、列に NULL 値を入れることができる場合には SQL_NULLABLE、列に NULL 値が入っていない場合には SQL_NO_NULLS、そして列に NULL 値を入れることができるかどうか不明である場合には SQL_NULLABLE_UNKNOWN となります。このフィールドは基本列ではなく、結果セット列に属しています。
IPD においては、動的パラメーターが常にヌル可能であるため、このフィールドは常に SQL_NULLABLE に設定され、アプリケーションはこれを設定することができません。
SQL_DESC_NUM_PREC_RADIX [すべて] この SQLINTEGER フィールドには、 SQL_DESC_TYPE フィールド内のデータ・タイプが近似値データ・タイプである場合は値として 2 が入れられます。これは、SQL_DESC_PRECISION フィールドに入っているのがビット数であるためです。また、 SQL_DESC_TYPE フィールド内のデータ・タイプが正確な数値データ・タイプである場合は値として 10 が入れられます。これは、SQL_DESC_PRECISION フィールドに入っているのが 10 進数であるためです。数値以外のすべてのデータ・タイプに対しては、このフィールドは 0 に設定されます。
SQL_DESC_OCTET_LENGTH [すべて] この SQLINTEGER レコード・フィールドには、文字ストリング・データ・タイプまたは 2 進データ・タイプの長さがバイト単位で入れられます。固定長文字タイプの場合、これは実際の長さ (バイト単位) です。可変長文字タイプまたは 2 進タイプの場合、これは最大長 (バイト単位) になります。この値は常に、実装記述子の場合にはヌル終了文字のためのスペースを除外してあり、アプリケーション記述子の場合にはヌル終了文字のためのスペースが含められています。アプリケーション・データの場合、このフィールドにはそのバッファーのサイズが入れられます。 APD の場合、このフィールドは出力パラメーターまたは入出力パラメーターに対してのみ定義されます。
SQL_DESC_OCTET_LENGTH_PTR [アプリケーション記述子] この SQLINTEGER * レコード・フィールドが指している変数には、動的引き数 (パラメーター記述子の場合) の、あるいはバインド済み列値 (行記述子の場合) の合計長がバイト単位で入れられます。
APD の場合、文字ストリングと 2 進数を除くすべての引き数において無視されます。このフィールドが SQL_NTS を指しているなら、その動的引き数は NULL 終了でなければなりません。バインド済みパラメーターを実行時データ・パラメーターにすることを示すため、アプリケーションは APD の適切なレコード内にあるこのフィールドを、実行時に値 SQL_DATA_AT_EXEC が入れられる変数に設定します。これと同様のフィールドが複数ある場合には、該当するパラメーターを 1 つずつ識別できるような値に SQL_DESC_DATA_PTR を設定することができ、これによってアプリケーションは要求されているパラメーターがどれであるかを判別しやすくなります。
ARD の OCTET_LENGTH_PTR フィールドがヌル・ポインターである場合、 DB2 CLI はその列の長さ情報を返しません。また、APD の SQL_DESC_OCTET_LENGTH_PTR フィールドがヌル・ポインターである場合は、 DB2 CLI は文字ストリングと 2 進値がヌル終了であるとみなします。 (2 進値は NULL 終了であってはなりませんが、切り捨てが生じないよう長さが指定されていなければなりません。)
このフィールドが指しているバッファーに入っている SQLFetch() または SQLFetchScroll() が SQL_SUCCESS または SQL_SUCCESS_WITH_INFO を返さなかった場合、そのバッファーの内容は未定義です。
このフィールドは据え置きフィールドです。これは設定時には使用されませんが、後で DB2 CLI によりデータをバッファーに入れるのに使用されます。
省略時設定では、これは 4 バイト値へのポインターです。 SQL_ATTR_USE_2BYTES_OCTET_LENGTH 環境変数を設定して、これを変更することができます。詳しくは、SQLSetEnvAttr - 環境属性を設定するを参照してください。
SQL_DESC_PARAMETER_TYPE [IPD] この SQLSMALLINT レコード・フィールドは、入力パラメーターの場合には SQL_PARAM_INPUT に、入出力パラメーターの場合には SQL_PARAM_INPUT_OUTPUT に、また出力パラメーターの場合には SQL_PARAM_OUTPUT に設定されます。省略時設定では、SQL_PARAM_INPUT に設定されます。
IPD の場合、IPD が DB2 CLI により自動的に移植されないと、このフィールドは省略時で SQL_PARAM_INPUT に設定されます (SQL_ATTR_ENABLE_AUTO_IPD ステートメント属性は SQL_FALSE です)。アプリケーションは IPD におけるこのフィールドを、入力パラメーターではないパラメーターに対して設定すべきです。
SQL_DESC_PRECISION [すべて] この SQLSMALLINT レコード・フィールドには、正確な数値タイプの場合には桁数が、近似値タイプの場合には仮数 (2 進精度) におけるビット数が、また SQL_TYPE_TIME、 SQL_TYPE_TIMESTAMP、SQL_INTERVAL_SECOND の各タイプの場合には小数表現による秒の部分の桁数が入れられます。それ以外のすべてのデータ・タイプに対しては、このフィールドは未定義となります。
このフィールド内の値は、 DB2 CLI バージョン 2 で定義された精度の値とは異なっている場合があります。
SQL_DESC_SCALE [すべて] この SQLSMALLINT レコード・フィールドには、 DECIMAL および NUMERIC データ・タイプの場合には定義済みの位取りが入れられます。それ以外のすべてのデータ・タイプに対しては、このフィールドは未定義となります。
このフィールド内の値は、 DB2 CLI バージョン 2 で定義された位取りの値とは異なっている場合があります。詳しくは、付録 D の『データ・タイプ』を参照してください。
SQL_DESC_SCHEMA_NAME [IRD] この読み取り専用の SQLCHAR レコード・フィールドには、対象となる列が入っている基本表のスキーマ名が入れられます。多くの DBMS の場合、これは所有者名となります。データ・ソースがスキーマ (または所有者) をサポートしていないか、スキーマ名が判別できない場合は、この変数には空ストリングが入れられます。
SQL_DESC_SEARCHABLE [IRD] この読み取り専用の SQLSMALLINT レコード・フィールドは、以下のいずれかの値に設定されます。
SQL_DESC_TABLE_NAME [IRD] この読み取り専用の SQLCHAR レコード・フィールドには、対象となる列が入っている基本表の名前が入れられます。
SQL_DESC_TYPE [すべて] この SQLSMALLINT レコード・フィールドは、日時およびインターバルを除くすべてのデータ・タイプに対する、 SQL または C のコンサイス・データ・タイプを指定します。日時データ・タイプおよびインターバル・データ・タイプの場合、このフィールドは冗長データ・タイプ、つまり SQL_DATETIME や SQL_INTERVAL を指定します。
このフィールドに SQL_DATETIME または SQL_INTERVAL が入っているときは常に、 SQL_DESC_DATETIME_INTERVAL_CODE フィールドにはそのコンサイス・タイプに対応したサブコードが入っていなければなりません。日時データ・タイプの場合、SQL_DESC_TYPE には SQL_DATETIME が入れられ、 SQL_DESC_DATETIME_INTERVAL_CODE フィールドにはその特定の日時データ・タイプに対するサブコードが入れられます。インターバル・データ・タイプの場合、SQL_DESC_TYPE には SQL_INTERVAL が入れられ、 SQL_DESC_DATETIME_INTERVAL_CODE フィールドにはその特定のインターバル・データ・タイプに対するサブコードが入れられます。
SQL_DESC_TYPE および SQL_DESC_CONCISE_TYPE フィールドの値は相互に依存しています。一方のフィールドを設定するたびに、もう一方のフィールドも設定しなければなりません。 SQL_DESC_TYPE は、 SQLSetDescField() または SQLSetDescRec() への呼び出しにより設定できます。 SQL_DESC_CONCISE_TYPE は、 SQLBindCol() または SQLBindParameter()、あるいは SQLSetDescField() への呼び出しにより設定できます。
SQL_DESC_TYPE をインターバルまたは日時以外のデータ・タイプに設定すると、 SQL_DESC_CONCISE_TYPE フィールドはそれと同じ値に設定され、 SQL_DESC_DATETIME_INTERVAL_CODE フィールドは 0 に設定されます。
SQL_DESC_TYPE が日時またはインターバルのいずれかの冗長データ・タイプ (SQL_DATETIME または SQL_INTERVAL) に設定され、 SQL_DESC_DATETIME_INTERVAL_CODE フィールドが適切なサブコードに設定されると、 SQL_DESC_CONCISE_TYPE フィールドはそれに対応するコンサイス・タイプに設定されます。 SQL_DESC_TYPE を日時またはインターバルのいずれかのコンサイス・タイプに設定しようとすると、 SQLSTATE HY021 (記述子情報に不整合 (Inconsistent descriptor information)) が返されます。
SQL_DESC_TYPE フィールドを SQLSetDescField() への呼び出しにより設定すると、以下のフィールドが次のような省略時値に設定されます。なお、同じレコードの残りのフィールドの値は未定義です。
SQL_DESC_TYPE | 暗黙的に設定される他のフィールド |
---|---|
SQL_CHAR、 SQL_VARCHAR | SQL_DESC_LENGTH は 1 に設定されます。 SQL_DESC_PRECISION は 0 に設定されます。 |
SQL_DECIMAL、 SQL_NUMERIC | SQL_DESC_SCALE は 0 に設定されます。 SQL_DESC_PRECISION は、それぞれのデータ・タイプの精度に設定されます。 |
SQL_FLOAT | SQL_DESC_PRECISION は、 SQL_FLOAT の省略時の精度に設定されます。 |
SQL_DATETIME | DB2 CLI はこのデータ・タイプをサポートしません。 |
SQL_INTERVAL | DB2 CLI はこのデータ・タイプをサポートしません。 |
アプリケーションが SQLSetDescRec() を呼び出す代わりに SQLSetDescField() を呼び出して記述子のフィールドを設定するときは、そのアプリケーションは最初にデータ・タイプを宣言しなければなりません。暗黙的に設定された値が受諾不能であれば、アプリケーションは次に SQLSetDescField() を呼び出してその受諾不能の値を明示的に設定できます。
SQL_DESC_TYPE_NAME [実装記述子] この読み取り専用の SQLCHAR レコード・フィールドには、データ・ソースに依存するタイプの名前 (たとえば、"CHAR"、 "VARCHAR" など) が入れられます。該当するデータ・タイプの名前が不明である場合は、この変数には空ストリングが入れられます。
SQL_DESC_UNNAMED [実装記述子] 行記述子の中にあるこの SQLSMALLINT レコード・フィールドは、 SQL_NAMED または SQL_UNNAMED のいずれかに設定されます。 NAME フィールドに列の別名が入っている場合、あるいは列の別名を適用しない場合は、 UNNAMED フィールドは SQL_NAMED に設定されます。また、列名や列の別名がない場合には、UNNAMED フィールドが SQL_UNNAMED に設定されます。
アプリケーションは IPD の SQL_DESC_UNNAMED フィールドを SQL_UNNAMED に設定することができます。アプリケーションが IPD の SQL_DESC_UNNAMED フィールドを SQL_NAMED に設定しようとすると、 SQLSTATE HY091 (記述子のフィールド識別子が無効 (Invalid descriptor field identifier)) が返されます。 IRD の SQL_DESC_UNNAMED フィールドは読み取り専用であるため、アプリケーションがそのフィールドを設定しようとすると SQLSTATE HY091 (記述子のフィールド識別子が無効 (Invalid descriptor field identifier)) が返されます。
SQL_DESC_UNSIGNED [実装記述子] この読み取り専用の SQLSMALLINT レコード・フィールドは、列タイプが無符号または非数値の場合には SQL_TRUE に、列タイプが符号ありの場合には SQL_FALSE に設定されます。
SQL_DESC_UPDATABLE [IRD] この読み取り専用の SQLSMALLINT レコード・フィールドは、以下のいずれかの値に設定されます。
SQL_DESC_UPDATABLE は、基本表内の列ではなく、結果セット内の列の更新可能度を記述します。この結果セット列の元になっている基本表内の列の更新可能度は、このフィールド内の値とは異なっていることがあります。また、列が更新可能であるかどうかは、データ・タイプ、ユーザー特権、および結果セットそのものの定義に基づいていることが考えられます。列が更新可能であるかどうかが不明であれば、 SQL_UPDT_READWRITE_UNKNOWN が返されることになります。
整合性検査は、アプリケーションが ARD、APD、 IPD のいずれかの SQL_DESC_DATA_PTR フィールドに値を渡した時点で、 DB2 CLI が自動的に実行します。いずれかのフィールドに、他のフィールドとの不整合があると、 SQLSetDescField() は SQLSTATE HY021、「記述子情報に不整合 (Inconsistent descriptor information)」を返します。詳しくは、『整合性検査』にある SQLSetDescRec() の項を参照してください。
戻りコード
診断
表 161. SQLSetDescField SQLSTATE
SQLSTATE | 説明 | 解説 |
---|---|---|
01000 | 通常の警告 | 通知メッセージ。 (関数は、SQL_SUCCESS_WITH_INFO を戻します。) |
01S02 | オプション値が変更されました。 | SQL の制約もしくは要件が原因で、 *ValuePtr に指定された値 (ValuePtr がポインターだった場合) または ValuePtr 内の値 (ValuePtr が 4 バイトからなる値だった場合) を DB2 CLI がサポートしていなかったか、 *ValuePtr が無効だったため、DB2 CLI がそれに近い値で置き換えました。 (関数は、SQL_SUCCESS_WITH_INFO を戻します。) |
07009 | 記述子索引が無効です。 | FieldIdentifier 引き数はヘッダー・フィールドでしたが、
RecNumber 引き数が 0 ではありませんでした。
RecNumber 引き数が 0 で、DescriptorHandle は IPD でした。
RecNumber 引き数は 0 未満でした。 |
08S01 | 通信リンクに障害が起きました。 | 関数が処理を完了する前に、DB2 CLI とその接続先データ・ソースとの間の通信リンクが失敗しました。 |
HY000 | 一般的なエラーです。 | 特定の SQLSTATE がなかった場合のエラーが発生しました。 SQLGetDiagRec() により *MessageText バッファーに返されたエラー・メッセージに、そのエラーと原因が記述されています。 |
HY001 | メモリーの割り振り失敗です。 | DB2 CLI は、この関数の実行または完了をサポートするために必要なメモリーを割り当てられませんでした。 |
HY010 | 関数の順序エラーです。 | DescriptorHandle が関連付けられていた StatementHandle に対して、非同期的に実行されるある関数 (この関数ではない) が呼び出され、この関数が呼び出された時点でまだ実行中でした。
DescriptorHandle と関連する StatementHandle の SQLExecute() または SQLExecDirect() が呼び出され、 SQL_NEED_DATA が戻されました。データがすべての実行時データ・パラメーターまたは列用に送られる前に、この関数が呼び出されました。 |
HY016 | インプリメンテーションの行記述子を変更することはできません。 | DescriptorHandle 引き数は IRD に関連付けられていましたが、 FieldIdentifier 引き数が SQL_DESC_ARRAY_STATUS_PTR ではありませんでした。 |
HY021 | 記述子情報が不整合です。 | TYPE フィールド、あるいは記述子内で TYPE フィールドに関連付けられた他のフィールドが有効ではないか整合性がありません。
TYPE フィールドが有効な DB2 CLI C タイプではありませんでした。
整合性検査時に検査された記述子情報は、整合性がとれていませんでした。 (『整合性検査』を参照。) |
HY091 | 記述子タイプが範囲外です。 | FieldIdentifier 引き数に指定された値が、
DB2 CLI の定義済みフィールドではなく、定義済み値でもありませんでした。
SQL_DESC_COUNT フィールド内の値よりも大きい値が RecNumber 引き数に指定されました。
FieldIdentifier 引き数が SQL_DESC_ALLOC_TYPE でした。 |
HY092 | オプション・タイプが範囲外です。 | Attribute 引き数に指定された値が有効ではありませんでした。 |
HY105 | パラメーター・タイプが無効です。 | SQL_DESC_PARAMETER_TYPE に指定された値が無効でした。 (詳しくは、SQLBindParameter() の『InputOutputType 引き数』の項を参照してください。) |
制約
なし。
例
該当するサンプルの一覧については、 sqllib\samples\cli (または sqllib/samples/cli) サブディレクトリー内の README ファイルを参照してください。
参照