SQL 限制
下表描述了 Db2 for i 数据库管理器施加的某些 SQL 和数据库限制。
注:
- 系统存储器限制可能排除此处指定的限制。 例如,请参阅 最大行大小。
- 存储量 的限制表示该限制取决于可用的存储量。
- 语句 的限制表示该限制取决于语句最大长度的限制。
| 标识限制 | 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 |
| 数字限制 | 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 |
| 字符串限制 | 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 |
| XML 限制 | Db2 for i 限制 |
|---|---|
| XML 模式文档的最大长度 (以字节计) | 2 147 483 647 |
| 已解析的 XML 实体的最大长度 | 1 千兆字节 |
| 内部 XML 树的最大深度 | 128 |
| JSON 限制 | Db2 for i 限制 |
|---|---|
| JSON 文档的最大长度 (以字节计) | 2 147 483 647 |
| 日期/时间限制 | 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 |
| Datalink 限制 | Db2 for i 限制 |
|---|---|
| DATALINK 的最大长度 | 32718 |
| DATALINK 注释的最大长度 | 254 |
| 数据库管理器限制 | 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 千兆字节。
16 太字节