C から SQL データ型へのデータ変換
アプリケーションが SQLExecute または SQLExecDirect を呼び出すと、ドライバーは、アプリケーション内のストレージの場所から SQLBindParameter にバインドされたすべてのパラメーターのデータを取得します。 アプリケーションが SQLSetPos を呼び出すと、ドライバーは更新のデータを取得するか、 SQLBindCol にバインドされた列から操作を追加します。 実行時データ パラメーターの場合、アプリケーションはパラメーター データを SQLPutData と共に送信します。 必要に応じて、ドライバーは、SQLBindParameter の ValueType 引数で指定されたデータ型から、SQLBindParameter の ParameterType 引数で指定されたデータ型にデータを変換し、データ ソースにデータを送信します。
次の表は、ODBC C データ型から ODBC SQL データ型へのサポートされている変換を示しています。 塗りつぶされた円は、SQL データ型の既定の変換 ( ValueType の値またはSQL_DESC_CONCISE_TYPE記述子フィールドがSQL_C_DEFAULTされたときにデータの変換元となる C データ型 ) を示します。 空の円は、サポートされている変換を示します。
変換されたデータの形式は、Windows の国または地域の設定の影響を受けません。
次のセクションの表では、ドライバーまたはデータ ソースがデータ ソースに送信されたデータを変換する方法について説明します。ドライバーは、すべての ODBC C データ型からサポートされている ODBC SQL データ型への変換をサポートするために必要です。 特定の ODBC C データ型の場合、テーブルの最初の列に、 ParameterType 引数の有効な入力値 SQLBindParameterが一覧表示されます。 2 番目の列には、ドライバーがデータを変換できるかどうかを判断するために実行されるテストの結果が一覧表示されます。 3 番目の列には、 SQLExecDirect、 SQLExecute、 SQLBulkOperations、 SQLSetPos、または SQLPutData によって返される SQLSTATE が一覧表示されます。 データは、SQL_SUCCESSが返された場合にのみデータ ソースに送信されます。
SQLBindParameter の ParameterType 引数に、特定の C データ型のテーブルに表示されない ODBC SQL データ型の識別子が含まれている場合、SQLBindParameter は SQLSTATE 07006 (制限付きデータ型属性違反) を返します。 ParameterType引数にドライバー固有の識別子が含まれており、ドライバーが特定の ODBC C データ型からそのドライバー固有の SQL データ型への変換をサポートしていない場合、SQLBindParameter は SQLSTATE HYC00 を返します (省略可能な機能は実装されていません)。
SQLBindParameter で指定された引数とStrLen_or_IndPtr引数SQLBindParameterが両方とも null ポインターである場合、その関数は SQLSTATE HY009 を返します (null ポインターの使用が無効です)。 テーブルには表示されませんが、アプリケーションは、SQLBindParameter のStrLen_or_IndPtr引数によって指される長さ/インジケーター バッファーの値、または
表では、次の用語を使用します。
データのバイト長 - データ ソースに送信される前にデータが切り捨てられるかどうかに関係なく、データ ソースに送信できる SQL データのバイト数。 文字列データの場合、null 終端文字のスペースは含まれません。
列のバイト長 - データ ソースにデータを格納するために必要なバイト数。
文字バイト長 - 文字形式でデータを表示するために必要な最大バイト数。 これは、 Display Size の各 SQL データ型に対して定義されています。ただし、文字バイト長はバイト単位ですが、表示サイズは文字単位です。
桁数 - 負符号、小数点、指数 (必要な場合) を含む数値を表すために使用される文字数。
単語の入力
斜体 - SQL 文法の要素。 文法要素の構文については、「 Appendix C: SQL Grammar」を参照してください。
このセクションでは、次のトピックを扱います。