SQL 限制

下表描述了 Db2 for i 数据库管理器施加的某些 SQL 和数据库限制。

注:
  • 系统存储器限制可能排除此处指定的限制。 例如,请参阅 最大行大小
  • 存储量 的限制表示该限制取决于可用的存储量。
  • 语句 的限制表示该限制取决于语句最大长度的限制。
表 1. 标识长度限制
标识限制 Db2 for i 限制
最长授权名称 101
最长相关名称 128
最长游标名 128
最长描述符名称 128
最长外部程序名 (字符串形式) 2792
最长外部程序名 (非限定格式) 10
最长主机标识3 128
最长包版本-标识 64
最长分区名称 10
最长保存点名称 128
最长模式名称 128
最长服务器名称 18
最长语句名 128
最长 SQL 条件名称 128
最长 SQL 标签 128
最长未限定别名 128
最长未限定列名 128
最长未限定约束名称 128
最长非限定单值类型名称 128
最长未限定函数名 128
最长未限定全局变量名 128
最长非限定索引名 128
最长未限定掩码名称 128
最长未限定节点组名 10
最长未限定包名 10
最长未限定许可权名称 128
最长未限定过程名称 128
最长未限定序列名称 128
最长未限定的特定名称 128
最长未限定 SQL 参数名称 128
最长未限定 SQL 变量名 128
最长未限定系统列名 10
最长未限定系统对象名 10
最长未限定系统模式名称 10
最长的未限定表和视图名称 128
最长未限定触发器名称 128
最长未限定 XSR 对象名 128
在 XMLELEMENT , XMLFOREST , XMLATTRIBUTES , XMLNAMESPACES 或 XMLPI 中指定的最长 XML 元素名称,属性名称,前缀名称或处理指令名称 128
XMLTABLE 中指定的最长 XML 路径名 128
已解析的 XML 文档的最长 XML 元素名称,属性名称,前缀名称或处理指令名称 1000
最长 XML 模式位置统一资源标识 (URI) 1000
最长 JSON 路径名 128

表 2。 数字限制
数字限制 Db2 for i 限制
最小的 SMALLINT 值 -32 768
最大的 SMALLINT 值 +32767
最小的 INTEGER 值 -2 147 483 648
最大的 INTEGER 值 +2 147 483 647
最小的 BIGINT 值 -9 223 372 036 854 775 808
最大的 BIGINT 值 +9 223 372 036 854 775 807
最大的十进制精度 63
REAL 值的最大指数(Emax 38
最小 REAL 值4 -3. 4x1038
最大 REAL 值4 + 3.4x1038
REAL 值的最小指数(Emin -38
最小正 REAL 值4 + 1.18x10-38
最大负 REAL 值4 -1. 18x10-38
DOUBLE 值的最大指数(Emax 308
最小 DOUBLE 值4 -1. 79x10308
最大 DOUBLE 值4 + 1.79x10308
DOUBLE 值的最小指数(Emin -308
最小正 DOUBLE 值4 + 2.23x10-308
最大负 DOUBLE 值4 -2. 23x10-308
DECFLOAT(16) 值的最大指数(Emax 384
最小 DECFLOAT (16) 值5 -9.9999999999999x10384
最大 DECFLOAT (16) 值5 9.9999999999999x10384
DECFLOAT(16) 值的最小指数(Emin -383
最小正 DECFLOAT (16) 值5 1x10-383
最大负 DECFLOAT (16) 值5 - 1x10-383
DECFLOAT(34) 值的最大指数(Emax 6144
最小 DECFLOAT (34) 值5 -9. 999999999999999999999999999999999x106144
最大 DECFLOAT (34) 值5 9.99999999999999999999999999999999999x106144
DECFLOAT(34) 值的最小指数(Emin -6143
最小正 DECFLOAT (34) 值5 1x10-6143
最大负 DECFLOAT (34) 值5 - 1x10-6143

  

表 3. 字符串限制
字符串限制 Db2 for i 限制
CHAR 的最大长度(以字节计) 327656
VARCHAR 的最大长度(以字节计) 327396
CLOB 的最大长度(以字节计) 2 147 483 647
GRAPHIC 的最大长度(以双字节字符计) 163826
VARGRAPHIC 的最大长度(以双字节字符计) 163696
DBCLOB 的最大长度(以双字节字符计) 1 073 741 823
BINARY 的最大长度 (以字节计) 327656
VARBINARY 的最大长度 (以字节计) 327396
BLOB 的最大长度(以字节计) 2 147 483 647
序列化 XML 的最大长度(以字节计) 2 147 483 647
字符常量的最大长度 32740
图形常量的最大长度 16370
二进制常量的最大长度 32740
并置字符串的最大长度 2 147 483 647
并置图形字符串的最大长度 1 073 741 823
并置二进制字符串的最大长度 2 147 483 647
十六进制常数的最大位数 32 762
目录注释的最大长度 20007
列标签的最大长度 (以字节计) 60
SQL 例程标签的最大长度 128
表,包或别名标签的最大长度 50
以 C NUL 终止的最大长度 327396
C NUL 终止图形的最大长度 163696

 

表 4. XML 限制
XML 限制 Db2 for i 限制
XML 模式文档的最大长度 (以字节计) 2 147 483 647
已解析的 XML 实体的最大长度 1 千兆字节
内部 XML 树的最大深度 128
表 5。 JSON 限制
JSON 限制 Db2 for i 限制
JSON 文档的最大长度 (以字节计) 2 147 483 647
表 6。 日期/时间限制
日期/时间限制 Db2 for i 限制
最小的 DATE 值 0001-01-01
最大的 DATE 值 9999-12-31
最小的 TIME 值 00:00:00
最大的 TIME 值 24:00:00
最小的 TIMESTAMP 值 0001-01-01-00.00.00.000000000000
最大的 TIMESTAMP 值 9999-12-31-24.00.00.000000000000
最小时间戳记精度 0
最大时间戳记精度 12
表 7。 DataLink 限制
Datalink 限制 Db2 for i 限制
DATALINK 的最大长度 32718
DATALINK 注释的最大长度 254
表 8。 数据库管理器限制
数据库管理器限制 Db2 for i 限制
关系数据库
最大模式数 存储
关系数据库中的最大表数 存储
节点组中的最大节点数 32
模式
模式中的最大对象数 大约 1 000 000
表格和视图
表中的最大列数 8000
视图中的最大列数 8000
不包含 LOB (包括所有开销) 的行的最大长度 32766
具有 LOB (包括所有开销) 的行的最大长度 3 758 096 383
非分区表中的最大行数 4 294 967 288
数据分区中的最大行数 4 294 967 288
非分区表的最大大小 1.7 太字节
数据分区的最大大小 1.7 太字节
单个分区表中的最大数据分区数 256
最大表分区列数 120
视图或具体化查询表中引用的最大表数 10008
从属视图,具体化查询表以及表或视图的索引的最大数目。 存储
约束
表中约束的最大数目 5000
UNIQUE 约束中的最大列数 120
UNIQUE 约束中列的最大组合长度 (以字节为单位) 327676
外键中的最大引用列数 120
外键中引用列的最大组合长度 (以字节计) 327676
CHECK 约束的最大长度 (以字节计) 语句
触发器
表中触发器的最大数目 300
级联触发器的最大运行时深度 200
索引
表中的最大索引数 大约 15000
索引键中列的最大数目 120
索引键的最大长度 327676
非分区索引的最大大小 开始更改16 太字节结束更改
分区索引的分区的最大大小 开始更改16 太字节结束更改
SQL
SQL 语句的最大长度 (以字节计) 2 097 152
SQL 语句中引用的最大表数 10008
SQL 语句中变量和常量的最大数目 327009
选择列表中的最大元素数 大约 800010
WHERE 或 HAVING 子句中的最大谓词数 语句
GROUP BY 子句中的最大列数 GROUP BY 总长度
GROUP BY 子句中列的最大总长度 3.5 千兆字节11
CUBE 分组中的最大元素数 10
ORDER BY 子句中的最大列数 ORDER BY 总长度
ORDER BY 子句中列的最大总长度 3.5 千兆字节 11
分层查询的最大递归级别 250
子查询允许的最大级别 256
插入操作中一行的最大值个数 8000
单个更新操作中的最大 SET 子句数 8000
例程
过程中参数的最大数目 200012
函数中参数的最大数目 200012
表函数中的最大返回列数 8000
例程的最大嵌套级别数 存储
类型
数组类型的最大基数 2 147 483 647
应用程序
预编译程序中的最大主变量声明数 存储器13
主变量值的最大长度(以字节计) 2 147 483 647
MQ 消息 CLOB 值的最大长度 (以字节计) 2M
MQ 消息的最大长度变化长度值 (以字节计) 32000
程序中已声明游标的最大数目 存储
同时打开的游标的最大数目 存储器 14
作业单元中锁定的行的最大数目 500 000 000
工作单元中 DDL 语句的最大数目 131 036
事务中的最大定位器数 16 000 000 15
SQLDA 的最大大小(以字节计) 16 777 215
预编译语句的最大数目 存储
一次活动的最大保存点数 存储
进程中同时分配的最大 CLI 句柄数 160 000 16
包的最大大小 1008 兆字节17
路径的最大长度 8843
路径中的最大模式数 268
密码的最大长度 127
提示的最大长度 32
程序,服务程序或模块关联空间的最大大小 (以字节计) 16 777 216
诊断区域的最大大小 90K
数组变量的最大大小 4GB

1 作为应用程序请求者, Db2 for i 可以发送最多 255 个字节的授权名称。
2 对于 REXX 过程,限制为 33。
3 对于 RPG、 COBOL 或 REXX 程序,限制为 64。
4 显示的值是近似的。
5 这些是 DECFLOAT 中正常数字的限制。 DECFLOAT 还包含同样有效的特殊值,例如 NaN 和 Infinity。 DECFLOAT 还支持超出记录范围的非正常数字。
6 如果列为 NOT NULL ,那么最大值为 1。
7 对于序列,限制为 500。
8 引用的最大成员 (和分区) 数也为 1000。 在 DELETE 和 UPDATE 语句中,最大数目为 256。 在复杂 SQL 语句中,可以引用的表数可能受到内部结构的限制。
9 限制由内部结构限制,并且根据在语句中使用常量的方式以及是否使用非常大的字符串常量或变量,限制可能较小。
10 限制基于为解析的 SQL 语句生成的内部结构的大小。
11 如果 CQE 处理了 SELECT 语句,那么限制为 32766。 如果使用 ICU 整理序列或 ALWCPYDTA (*NO) ,那么限制将小于此值。
12 SQL 过程和 SQL 函数最多可以有 2000 个参数。 外部过程和外部函数的参数数量不能超过 2000 ,并且受语言允许的最大参数数量限制。
13 在 RPG/400® 和 PL/I 程序中,当使用旧的参数传递技术时,上限约为 4000。 此限制基于程序中允许的指针数。 在所有其他情况下,限制基于操作系统约束。
14 在单个作业中一次打开的最大游标数大约为 20 966
15 在 SQL Server 方式下,事务中的最大定位器数为 209 000。
16 每个 DRDA 连接的最大已分配句柄数为 500。
17 可以使用 QAQQINI 选项将最大大小 DRDA 包的 从 500 兆字节增加到 1 千兆字节。