SQL の制約
以下の表に、DB2® for i のデータベース・マネージャーにより SQL およびデータベースに課せられる一定の制約を示します。
注:
- システム・ストレージの制限により、ここで指定される制限が無効になる場合があります。例えば、最大行サイズを参照してください。
- ストレージ の制限とは、その制限が使用可能なストレージの量に依存していることを意味します。
- ステートメント の制限とは、その制限がステートメントの最大長制限に依存していることを意味します。
| 制限される ID | DB2 for i の制限 |
|---|---|
| 権限名の最大長 | 101 |
| 相関名の最大長 | 128 |
| カーソル名の最大長 | 128 |
| 記述子名の最大長 | 128 |
| 外部プログラム名の最大長 (ストリング形式) | 2792 |
| 外部プログラム名の最大長 (非修飾形式) | 10 |
| ホスト ID の最大長3 | 128 |
| パッケージ・バージョン ID の最大長 | 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 |
| 解析する XML 文書の XML のエレメント名、属性名、接頭部名、処理命令名の最大長 | 1000 |
| XML スキーマの Uniform Resource Identifier (URI) の最大長 | 1000 |
| 数値の制約 | DB2 for i の制限 |
|---|---|
| SMALLINT (短整数) の最小値 | -32 768 |
| SMALLINT (短整数) の最大値 | +32 767 |
| 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 |
| 10 進数の精度の最大値 | 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.999999999999999x10384 |
| DECFLOAT(16) の最大値5 | 9.999999999999999x10384 |
| 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.999999999999999999999999999999999x106144 |
| 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 の最大長 (2 バイト文字数) | 163826 |
| VARGRAPHIC の最大長 (2 バイト文字数) | 163696 |
| DBCLOB の最大長 (2 バイト文字数) | 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 |
| 16 進定数桁の最大数 | 32 762 |
| カタログ・コメントの最大長 | 20007 |
| 列ラベルの最大長 (バイト数) | 60 |
| SQL ルーチン・ラベルの最大長 | 128 |
| 表、パッケージ、または別名のラベルの最大長 | 50 |
| C の NUL 終了ストリングの最大長 | 327396 |
| C の NUL 終了グラフィックの最大長 | 163696 |
| XML 制限 | DB2 for i の制限 |
|---|---|
| XML スキーマ文書の最大長 (バイト数) | 2 147 483 647 |
| 解析する XML エンティティーの最大長 | 2 147 483 647 |
| 内部 XML ツリーの最大深さ | 128 |
| 日付/時刻の制約 | 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 |
| データ・リンクの制約 | DB2 for i の制限 |
|---|---|
| DATALINK の最大長 | 32718 |
| DATALINK コメントの最大長 | 254 |
| データベース・マネージャーの制約 | DB2 for i の制限 |
|---|---|
| リレーショナル・データベース | |
| スキーマの最大数 | 記憶域のサイズによる |
| リレーショナル・データベース内の表の最大数 | 記憶域のサイズによる |
| ノード・グループ内のノードの最大数 | 32 |
| スキーマ | |
| スキーマ内のオブジェクトの最大数 | 約 360 000 |
| 表とビュー | |
| 表の列の最大数 | 8000 |
| ビュー内の列の最大数 | 8000 |
| LOB のない行の最大長 (すべてのオーバーヘッドを含む) | 32766 |
| LOB がある行の最大長 (すべてのオーバーヘッドを含む) | 3 758 096 383 |
| 非パーティション表内の行の最大数 | 4 294 967 288 |
| データ・パーティション内の行の最大数 | 4 294 967 288 |
| 非パーティション表の最大サイズ | 1.7 テラバイト |
| データ・パーティションの最大サイズ | 1.7 テラバイト |
| 1 つのパーティション表内のデータ・パーティションの最大数 | 256 |
| 表パーティション列の最大数 | 120 |
| ビューまたはマテリアライズ照会表で参照する表の最大数 | 2568 |
| 1 つの表またはビューの従属ビュー、マテリアライズ照会表、および索引の最大数 | 記憶域のサイズによる |
| 制約 | |
| 1 つの表の制約の最大数 | 5000 |
| UNIQUE 制約における列の最大数 | 120 |
| UNIQUE 制約における列の結合後の最大長 (バイト数) | 327676 |
| 外部キーで参照される列の最大数 | 120 |
| 外部キーで参照される列の結合後の最大長 (バイト単位) | 327676 |
| CHECK 制約の最大長 (バイト数) | ステートメント |
| トリガー | |
| 表上のトリガーの最大数 | 300 |
| トリガーのカスケード実行時の最大深さ | 200 |
| 索引 | |
| 表の索引の最大数 | 約 15000![]() |
| 索引キーの列の最大数 | 120 |
| 索引キーの最大長 | 327676 |
| 非パーティション化索引の最大サイズ | 1.7 テラバイト |
| パーティション化索引のパーティションの最大サイズ | 1.7 テラバイト |
| SQL | |
| SQL ステートメントの最大長 (バイト数) | 2 097 152 |
| 1 つの SQL ステートメントで参照する表の最大数 | 10008 |
| SQL ステートメント内の変数および定数の最大数 | 40969 |
| 選択リスト内のエレメントの最大数 | 約 800010 |
| WHERE または HAVING 節の述部の最大数 | ステートメント |
| 1 つの GROUP BY 文節の列の最大数 | GROUP BY の合計長 |
| 1 つの GROUP BY 文節の列の最大合計長 | 3.5 ギガバイト11 |
| CUBE グループのエレメントの最大数 | 10 |
| 1 つの ORDER BY 文節の列の最大数 | ORDER BY の合計長 |
| 1 つの 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 |
| 準備済みステートメントの最大数 | 記憶域のサイズによる |
| 一度にアクティブにできるセーブポイントの最大数 | 記憶域のサイズによる |
| 1 つのプロセス内で同時に割り振りできる CLI ハンドルの最大数 | 160 000 16 |
| パッケージの最大サイズ | 500 メガバイト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 および無限大などの特殊値も含まれており、これらの特殊値も有効です。
DECFLOAT は、資料に記載された範囲から外れた、正常値に達していない数値もサポートします。
6 列が NOT NULL の場合、最大値は 1 つ大きくなります。
7 シーケンスの場合は、制限は 500 です。
8 参照されるメンバー (およびパーティション) の最大数も 1000 です。DELETE および UPDATE ステートメントでは、最大数は 256 です。
9 ステートメントが読み取り専用でない場合、この制限は 2048 になります。
この制限は概算であり、使用するストリング定数またはストリング変数が非常に大きい場合は、制限値がもっと小さくなることがあります。
10 この制限は、解析対象の SQL ステートメントについて生成される内部構造のサイズに基づくものです。
11 CQE が
選択ステートメントを処理した場合、限度は 32766 です。この限度は、ICU 照合順序または ALWCPYDTA(*NO) が使用されると低くなります。
12
SQL プロシージャーと SQL 関数では、最大 2000 個までパラメーターを指定できます。
外部プロシージャーと外部関数のパラメーター数は、2000 を超えることはできず、その言語で許されるパラメーターの最大数によって制約されます。
SQL プロシージャーと SQL 関数では、最大 2000 個までパラメーターを指定できます。
外部プロシージャーと外部関数のパラメーター数は、2000 を超えることはできず、その言語で許されるパラメーターの最大数によって制約されます。
13 RPG/400® および PL/I プログラムで従来のパラメーター引き渡し手法を使用する場合、制限は約 4000 になります。この制限は、プログラムで使用できるポインターの数によるものです。
その他のすべての場合、制限はオペレーティング・システムの制約に基づきます。
14 1 つのジョブ内で一度にオープンできるカーソルの最大数は、約
20 966
です。
20 966
です。15 SQL Server モードの 1 つのトランザクション内のロケーターの最大数は 209 000 です。
16 DRDA® 接続あたりの割り振られるハンドルの最大数は 500 です。