判定對等的 SQL 及 RPG/400 資料類型

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

表 1. RPG/400 宣告對映至一般 SQL 資料類型
RPG/400® 資料類型 第 43 欄 第 52 欄 其他 RPG/400 編碼 主變數的 SQLTYPE 主變數的 SQLLEN SQL 資料類型
資料結構子欄位 空白 空白 長度 = n ,其中 n ≤ 256 452 n CHAR(N)
資料結構 (無子欄位) 長度 = n ,其中 n ≤ 9999 452 n CHAR(N)
輸入欄位 空白 空白 長度 = n ,其中 n ≤ 256 452 n CHAR(N)
計算結果欄位 空白 長度 = n ,其中 n ≤ 256 452 n CHAR(N)
資料結構子欄位 B 0 長度 = 2 500 2 SMALLINT
資料結構子欄位 B 0 長度 = 4 496 4 INTEGER
資料結構子欄位 B 1-4 長度 = 2 500 2 DECIMAL (4,s) ,其中 s=column 52
資料結構子欄位 B 1-9 長度 = 4 496 4 DECIMAL (9,s) 其中 s=column 52
資料結構子欄位 P 0 至 9 長度 = n ,其中 n 是 1 至 16 484 p in byte 1 , s in byte 2 DECIMAL (p , s) ,其中 p = n*2-1 且 s = 直欄 52
輸入欄位 P 0 至 9 長度 = n ,其中 n 是 1 至 16 484 p in byte 1 , s in byte 2 DECIMAL (p , s) ,其中 p = n*2-1 且 s = 直欄 52
輸入欄位 空白 0 至 9 長度 = n ,其中 n 是 1 到 30 484 p in byte 1 , s in byte 2 DECIMAL (p , s) 其中 p = n 且 s = 直欄 52
輸入欄位 B 如果 n = 2 ,則為 0 至 4; 如果 n = 4 ,則為 0 至 9 長度 = 2 或 4 484 p in byte 1 , s in byte 2 DECIMAL (p , s) 其中 p=4 如果 n=2 ,或 9 如果 n=4 且 s = 直欄 52
計算結果欄位 0 至 9 長度 = n ,其中 n 是 1 到 30 484 p in byte 1 , s in byte 2 DECIMAL (p , s) 其中 p = n 且 s = 直欄 52
資料結構子欄位 空白 0 至 9 長度 = n ,其中 n 是 1 到 30 488 p in byte 1 , s in byte 2 NUMERIC (p , s) 其中 p = n 且 s = 直欄 52

使用下表中的資訊來判定等同於給定 SQL 資料類型的 RPG/400 資料類型。

表 2. 對映至一般 RPG/400 宣告的 SQL 資料類型
SQL 資料類型 RPG/400 資料類型 附註
SMALLINT 資料結構的子欄位。 在子欄位規格的位置 52 中,位置 43 中的 B 長度必須是 2 ,而在位置 52 中必須是 0。  
INTEGER 資料結構的子欄位。 在子欄位規格的位置 52 中,位置 43 的長度必須是 4 ,而位置 52 的長度必須是 0。  
BIGINT 沒有確切的對等項目 在子欄位規格的位置 43 中使用 P ,在位置 52 中使用 0。
DECIMAL 資料結構的子欄位。 子欄位規格的位置 43 中的 P 和位置 52 中的 0 到 9。

定義為數值,而不是資料結構的子欄位。

長度上限為 16 (精準度 30) ,小數位數上限為 9。
NUMERIC 資料結構的子欄位。 子欄位位置 43 中的空白和位置 52 中的 0 到 9 長度上限為 30 (精準度 30) ,小數位數上限為 9。
DECFLOAT 不支援 不支援
FLOAT (單一精準度) 沒有確切的對等項目 請使用上述其中一個替代數值資料類型。
FLOAT (倍精準度) 沒有確切的對等項目 請使用上述其中一個替代數值資料類型。
CHAR(N) 資料結構或輸入欄位的子欄位。 在規格的位置 43 和 52 中為空白。

已定義沒有小數位數的計算結果欄位。

n 可以從 1 到 256。
CHAR(N) 資料結構名稱在資料結構中沒有子欄位。 n 可以從 1 到 9999。
VARCHAR(N) 沒有確切的對等項目 請使用足以包含最大預期 VARCHAR 值的字元主變數。
CLOB 不支援 不支援
GRAPHIC(N) 不支援 不支援
VARGRAPHIC(N) 不支援 不支援
DBCLOB 不支援 不支援
BINARY 不支援 不支援
VARBINARY 不支援 不支援
BLOB 不支援 不支援
DATE 資料結構的子欄位。 子欄位規格的位置 52 中為空白。

已定義欄位,不含小數位數。

如果格式為 *USA、*JIS、*EUR 或 *ISO ,則長度必須至少為 10。 如果格式為 *YMD、*DMY 或 *MDY ,則長度必須至少為 8。 如果格式為 *JUL ,則長度必須至少為 6。
時間 資料結構的子欄位。 子欄位規格的位置 52 中為空白。

已定義欄位,不含小數位數。

長度必須至少為 6; 若要包括秒,長度必須至少為 8。
TIMESTAM 資料結構的子欄位。 子欄位規格的位置 52 中為空白。

已定義欄位,不含小數位數。

長度必須至少為 19。 若要以完整精準度併入微秒,長度必須為 26。 如果長度小於 26 ,則會在微秒部分發生截斷。
變更開始BOOLEAN變更結束 變更開始不支援變更結束 變更開始不支援。變更結束
XML 不支援 不支援
DATALINK 不支援 不支援
ROWID 不支援 不支援
結果集定位器 (result set locator) 不支援 不支援