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

SAP Sybase SQL Anywhere 16.0 » SQL Anywhere サーバ プログラミング » Embedded SQL » SQLDA (SQL descriptor area) » SQLDA の sqllen フィールドの値

 

DESCRIBE 実行後の SQLDA の sqllen フィールドの値

DESCRIBE 文は、データベースから取り出したデータを格納するために必要なホスト変数、またはデータベースにデータを渡すために必要なホスト変数に関する情報を取得します。

次の表は、データベースのさまざまな型に対して DESCRIBE 文 (SELECT LIST 文と BIND VARIABLE 文の両方) が返す sqllen と sqltype 構造体のメンバーの値を示します。ユーザ定義のデータベースデータ型の場合、ベースタイプが記述されます。

プログラムでは DESCRIBE の返す型と長さを使用できます。別の型も使用できます。データベースサーバはどの型でも型変換を行います。sqldata フィールドの指すメモリは sqltype と sqllen フィールドに合致させてください。Embedded SQL の型は、sqltype でビット処理 AND と DT_TYPES を指定して (sqltype & DT_TYPES) 取得します。

データベースのフィールドの型 返される Embedded SQL の型 describe で返される長さ (バイト単位)
BIGINT DT_BIGINT 8
BINARY(n) DT_BINARY n
BIT DT_BIT 1
CHAR(n) DT_FIXCHAR1 データベースの文字セットからクライアントの CHAR 文字セットへの変換時の最大データ拡張に n を掛けた値。この長さが 32767 バイトを超える場合、返される Embedded SQL の型は、32767 バイト長の DT_LONGVARCHAR になります。
CHAR(n CHAR) DT_FIXCHAR1 クライアントの CHAR 文字セット内の文字の最大長に n を掛けた値。この長さが 32767 バイトを超える場合、返される Embedded SQL の型は、32767 バイト長の DT_LONGVARCHAR になります。
DATE DT_DATE フォーマットされた文字列の最大長
DECIMAL(p,s) DT_DECIMAL SQLDA の長さフィールドの低位バイトが p に、高位バイトが s に設定される。sqlda.h の PRECISION および SCALE マクロを参照してください。
DOUBLE DT_DOUBLE 8
FLOAT DT_FLOAT 4
INT DT_INT 4
LONG BINARY DT_LONGBINARY 32767
LONG NVARCHAR DT_LONGVARCHAR / DT_LONGNVARCHAR2 32767
LONG VARCHAR DT_LONGVARCHAR 32767
NCHAR(n) DT_FIXCHAR / DT_NFIXCHAR2 クライアントの NCHAR 文字セット内の文字の最大長に n を掛けた値。この長さが 32767 バイトを超える場合、返される Embedded SQL の型は、32767 バイト長の DT_LONGNVARCHAR になります。
NVARCHAR(n) DT_VARCHAR / DT_NVARCHAR2 クライアントの NCHAR 文字セット内の文字の最大長に n を掛けた値。この長さが 32767 バイトを超える場合、返される Embedded SQL の型は、32767 バイト長の DT_LONGNVARCHAR になります。
REAL DT_FLOAT 4
SMALLINT DT_SMALLINT 2
TIME DT_TIME フォーマットされた文字列の最大長
TIMESTAMP DT_TIMESTAMP フォーマットされた文字列の最大長
TINYINT DT_TINYINT 1
UNSIGNED BIGINT DT_UNSBIGINT 8
UNSIGNED INT DT_UNSINT 4
UNSIGNED SMALLINT DT_UNSSMALLINT 2
VARCHAR(n) DT_VARCHAR1 データベースの文字セットからクライアントの CHAR 文字セットへの変換時の最大データ拡張に n を掛けた値。この長さが 32767 バイトを超える場合、返される Embedded SQL の型は、32767 バイト長の DT_LONGVARCHAR になります。
VARCHAR(n CHAR) DT_VARCHAR1 クライアントの CHAR 文字セット内の文字の最大長に n を掛けた値。この長さが 32767 バイトを超える場合、返される Embedded SQL の型は、32767 バイト長の DT_LONGVARCHAR になります。

1 クライアントの CHAR 文字セットの最大バイト長が 32767 バイトを超える場合、CHAR および VARCHAR について返される型は DT_LONGVARCHAR になります。

2 クライアントの NCHAR 文字セットの最大バイト長が 32767 バイトを超える場合、NCHAR および NVARCHAR について返される型は DT_LONGNVARCHAR になります。NCHAR、NVARCHAR、LONG NVARCHAR はそれぞれデフォルトで DT_FIXCHAR、DT_VARCHAR、DT_LONGVARCHAR と記述されます。db_change_nchar_charset 関数が呼び出された場合、これらの型はそれぞれ DT_NFIXCHAR、DT_NVARCHAR、DT_LONGNVARCHAR と記述されます。

 参照