LIMIT は、コレクションが保持できる要素の最大数を返します。コレクションに最大数が定義されていない場合、LIMIT は NULL を返します。最大サイズを持つのは VARRAY のみです。
構文
collection.LIMITcollection はコレクションの名前です。
コレクションタイプ別の動作
| コレクションタイプ | 状態 | 戻り値 |
|---|---|---|
| VARRAY | 初期化済み | VARRAY の型宣言で定義された最大サイズ |
| VARRAY | 未初期化 (NULL) | 例外 |
| 連想配列 | 初期化済み | NULL |
| ネストテーブル | 初期化済み | NULL |
| ネストテーブル | 未初期化 (NULL) | 例外 |
例
次の例は、3 つのコレクションタイプすべてにおいて LIMIT と COUNT の動作がどのように異なるかを示しています。LIMIT は型宣言で定義された最大容量を反映し、COUNT は現在格納されている要素の数を反映します。
DECLARE
TYPE aa_type IS TABLE OF INTEGER INDEX BY PLS_INTEGER;
aa aa_type; -- 連想配列
TYPE va_type IS VARRAY(4) OF INTEGER;
va va_type := va_type(2, 4); -- 最大サイズ 4、要素数 2 の VARRAY
TYPE nt_type IS TABLE OF INTEGER;
nt nt_type := nt_type(1, 3, 5); -- 要素数 3 のネストテーブル
BEGIN
aa(1) := 3; aa(2) := 6; aa(3) := 9; aa(4) := 12;
DBMS_OUTPUT.PUT_LINE('aa.COUNT = ' || aa.COUNT); -- 4
DBMS_OUTPUT.PUT_LINE('aa.LIMIT = ' || NVL(TO_CHAR(aa.LIMIT), 'NULL')); -- NULL
DBMS_OUTPUT.PUT_LINE('va.COUNT = ' || va.COUNT); -- 2
DBMS_OUTPUT.PUT_LINE('va.LIMIT = ' || NVL(TO_CHAR(va.LIMIT), 'NULL')); -- 4
DBMS_OUTPUT.PUT_LINE('nt.COUNT = ' || nt.COUNT); -- 3
DBMS_OUTPUT.PUT_LINE('nt.LIMIT = ' || NVL(TO_CHAR(nt.LIMIT), 'NULL')); -- NULL
END;
/出力:
aa.COUNT = 4
aa.LIMIT = NULL
va.COUNT = 2
va.LIMIT = 4
nt.COUNT = 3
nt.LIMIT = NULLva.LIMIT は 2 (現在のカウント) ではなく、4 (宣言された最大値) を返します。連想配列とネストテーブルには定義されたサイズの上限がないため、aa.LIMIT と nt.LIMIT は NULL を返します。