Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » SQL Anywhere サーバー プログラミング » ODBC サポート

 

データアラインメントの要件

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) プロセッサーなどがあります。