判斷對等的 SQL 及 C 或 C++ 資料類型

前置編譯器根據表格來決定主變數的基本 SQLTYPE 及 SQLLEN。 如果主變數與指示器變數一起出現,則 SQLTYPE 是基本 SQLTYPE 加 1。

表 1. 對映至一般 SQL 資料類型的 C 或 C++ 宣告
C 或 C++ 資料類型 主變數的 SQLTYPE 主變數的 SQLLEN SQL 資料類型
短整數 500 2 SMALLINT
長整數 496 4 INTEGER
long long int 492 8 BIGINT
decimal (p , s) 484 p in byte 1 , s in byte 2 DECIMAL (p , s)
_Decimal32 996 4 雖然 SQL 不直接支援此資料類型,但仍視為 DECFLOAT (7)。
_Decimal64 996 8 DECFLOAT (16)
_Decimal128 996 16 DECFLOAT (34)
float 480 4 FLOAT (單一精準度)
倍整數 480 8 FLOAT (倍精準度)
單一字元形式 452 1 CHAR(1)
NUL-終止字元格式 460 長度 VARCHAR (長度-1)
VARCHAR 結構化表單 448 長度 VARCHAR (長度)
單一圖形表單 468 1 GRAPHIC (1)
以 NUL 終止的單一圖形形式 400 長度 VARGRAPHIC (長度-1)
VARGRAPHIC 結構化表單 464 長度 VARGRAPHIC (長度)

您可以使用下表來判定與給定 SQL 資料類型相等的 C 或 C++ 資料類型。

表 2. 對映至一般 C 或 C++ 宣告的 SQL 資料類型
SQL 資料類型 C 或 C++ 資料類型 附註
SMALLINT 短整數  
INTEGER 長整數  
BIGINT long long int  
DECIMAL (p , s) decimal (p , s) p 是 1 到 63 的正整數, s 是 0 到 63 的正整數。
NUMERIC (p , s) 或非零小數位數二進位 沒有確切的對等項目 使用 DECIMAL (p , s)。
DECFLOAT (16) _Decimal64 僅在 C 中受支援。
DECFLOAT (34) _Decimal128 僅在 C 中受支援。
FLOAT (單一精準度) float  
FLOAT (倍精準度) 倍整數  
CHAR(1) 單一字元形式  
CHAR(N) 沒有確切的對等項目 如果 n> 1 ,請使用 NUL 終止的字元格式。
VARCHAR(N) NUL-終止字元格式 至少容許 n+ 1 以容納 NUL 終止字元。 如果資料可以包含字元 NUL (/0) ,請使用 VARCHAR 結構化格式或 SQL VARCHAR。

n 是正整數。 n 的最大值是 32740。

VARCHAR 結構化表單 n 的最大值是 32740。 也可以使用 SQL VARCHAR 格式。
CLOB 使用 SQL TYPE IS 來宣告 C 或 C++ 中的 CLOB。
GRAPHIC (1) 單一圖形表單  
GRAPHIC (n) 沒有確切的對等項目  
VARGRAPHIC(N) NUL 終止的圖形表單 如果 n > 1 ,請使用以 NUL 終止的圖形格式。
VARGRAPHIC 結構化表單 如果資料可以包含圖形 NUL 值 (/0/ 0) ,請使用 VARGRAPHIC 結構化表單。 至少容許 n + 1 以容納 NUL 終止字元。

n 是正整數。 n 的最大值為 16370。

DBCLOB 使用 SQL TYPE IS 來宣告 C 或 C++ 中的 DBCLOB。
BINARY 使用 SQL TYPE IS 在 C 或 C++ 中宣告 BINARY。
VARBINARY 使用 SQL TYPE IS 在 C 或 C++ 中宣告 VARBINARY。
BLOB 使用 SQL TYPE IS 來宣告 C 或 C++ 中的 BLOB。
DATE NUL-終止字元格式 如果格式為 *USA、*ISO、*JIS 或 *EUR ,則至少容許 11 個字元容納 NUL 終止字元。 如果格式為 *MDY、*YMD 或 *DMY ,則至少容許 9 個字元容納 NUL 終止字元。 如果格式為 *JUL ,則至少容許 7 個字元來容納 NUL 終止字元。
VARCHAR 結構化表單 如果格式為 *USA、*ISO、*JIS 或 *EUR ,則容許至少 10 個字元。 如果格式為 *MDY、*YMD 或 *DMY ,則至少容許 8 個字元。 如果格式為 *JUL ,則至少容許 6 個字元。
時間 NUL-終止字元格式 至少容許 7 個字元 (9 表示併入秒) ,以容納 NUL 終止字元。
VARCHAR 結構化表單 至少容許 6 個字元; 8 可包含秒。
TIMESTAM NUL-終止字元格式 容許至少 20 個字元 (33 表示包含所有小數秒) ,以容納 NUL 終止字元。 如果 n 小於 33 ,則在小數秒部分會發生截斷。
VARCHAR 結構化表單 至少容許 19 個字元。 若要包括所有小數秒,請容許 32 個字元。 如果字元數小於 32 ,則會在小數秒部分進行截斷。
變更開始BOOLEAN變更結束 變更開始變更結束 變更開始使用 SQL TYPE IS 來宣告 C 或 C++ 中的 BOOLEAN。變更結束
XML 使用 SQL TYPE IS 在 C 或 C++ 中宣告 XML。
DATALINK 不支援  
ROWID 使用 SQL TYPE IS 來宣告 C 或 C++ 中的 ROWID。
結果集定位器 (result set locator) 使用 SQL TYPE IS 來宣告 C 或 C++ 中的結果集定位器。