判定對等的 SQL 及 RPG/400 資料類型
前置編譯器根據表格來決定主變數的基本 SQLTYPE 及 SQLLEN。 如果主變數與指示器變數一起出現,則 SQLTYPE 是基本 SQLTYPE 加 1。
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 資料類型。
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 ,則會在微秒部分發生截斷。 |
![]() ![]() |
![]() ![]() |
![]() ![]() |
XML | 不支援 | 不支援 |
DATALINK | 不支援 | 不支援 |
ROWID | 不支援 | 不支援 |
結果集定位器 (result set locator) | 不支援 | 不支援 |