SQL の制約

以下の表に、DB2® for i のデータベース・マネージャーにより SQL およびデータベースに課せられる一定の制約を示します。

注:
  • システム・ストレージの制限により、ここで指定される制限が無効になる場合があります。例えば、最大行サイズを参照してください。
  • ストレージ の制限とは、その制限が使用可能なストレージの量に依存していることを意味します。
  • ステートメント の制限とは、その制限がステートメントの最大長制限に依存していることを意味します。
表 1. ID の長さに関する制約
制限される 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

表 2. 数値の制約
数値の制約 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

  

表 3. ストリングの制約
ストリングの制約 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

 

表 4. XML 制限
XML 制限 DB2 for i の制限
XML スキーマ文書の最大長 (バイト数) 2 147 483 647
解析する XML エンティティーの最大長 2 147 483 647
内部 XML ツリーの最大深さ 128
表 5. 日付/時刻の制約
日付/時刻の制約 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
表 6. データ・リンクの制約
データ・リンクの制約 DB2 for i の制限
DATALINK の最大長 32718
DATALINK コメントの最大長 254
表 7. データベース・マネージャーの制約
データベース・マネージャーの制約 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 を超えることはできず、その言語で許されるパラメーターの最大数によって制約されます。変更の終わり
13 RPG/400® および PL/I プログラムで従来のパラメーター引き渡し手法を使用する場合、制限は約 4000 になります。この制限は、プログラムで使用できるポインターの数によるものです。 その他のすべての場合、制限はオペレーティング・システムの制約に基づきます。
14 1 つのジョブ内で一度にオープンできるカーソルの最大数は、約 変更の始まり20 966変更の終わり です。
15 SQL Server モードの 1 つのトランザクション内のロケーターの最大数は 209 000 です。
16 DRDA® 接続あたりの割り振られるハンドルの最大数は 500 です。
17 DRDA パッケージの最大サイズは、QAQQINI オプションを使用して 1 ギガバイトに増やすことができます。他のタイプのパッケージは 16M に制限されています。