SQLBindCol、SQLBindParameter、または SQLGetData を使用する場合、カラムまたはパラメーターには C データ型が指定されます。プラットフォームによっては、指定された型の値をフェッチまたは格納するために、各カラム用のストレージ (メモリ) を適切にアラインする必要があります。ODBC ドライバーは、データアラインメントが適切かどうかを確認します。オブジェクトが適切に揃っていない場合、ODBC ドライバーは "Invalid string or buffer length" (無効な文字列またはバッファー長) というメッセージ (SQLSTATE HY090 または S1090) を出力します。
次の表は、Sun Sparc、Itanium-IA64、ARM ベースのデバイスなどのプロセッサーに対するメモリアラインメント要件を示したものです。データ値のメモリアドレスは、示された値の倍数である必要があります。
C データ型 | 必要なアラインメント |
---|---|
SQL_C_CHAR | なし |
SQL_C_BINARY | なし |
SQL_C_GUID | なし |
SQL_C_BIT | なし |
SQL_C_STINYINT | なし |
SQL_C_UTINYINT | なし |
SQL_C_TINYINT | なし |
SQL_C_NUMERIC | なし |
SQL_C_DEFAULT | なし |
SQL_C_SSHORT | 2 |
SQL_C_USHORT | 2 |
SQL_C_SHORT | 2 |
SQL_C_DATE | 2 |
SQL_C_TIME | 2 |
SQL_C_TIMESTAMP | 2 |
SQL_C_TYPE_DATE | 2 |
SQL_C_TYPE_TIME | 2 |
SQL_C_TYPE_TIMESTAMP | 2 |
SQL_C_WCHAR | 2 (すべてのプラットフォームでバッファーサイズは 2 の倍数であることが必要) |
SQL_C_SLONG | 4 |
SQL_C_ULONG | 4 |
SQL_C_LONG | 4 |
SQL_C_FLOAT | 4 |
SQL_C_DOUBLE | 8 (ARM の場合は 4) |
SQL_C_SBIGINT | 8 |
SQL_C_UBIGINT | 8 |
x86、x64、および PowerPC プラットフォームではメモリアラインメントは必要ありません。x64 プラットフォームには、Advanced Micro Devices (AMD) AMD64 プロセッサーや Intel Extended Memory 64 Technology (EM64T) プロセッサーなどがあります。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |