COUNTは、コレクション内の要素数を返します(削除された要素は無視されます。DELETE操作でそのプレースホルダーが保持されている場合でも同様です)。
適用対象
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供します。
変動配列での使用
変動配列において、COUNTは常にLASTと等しくなります。EXTENDまたはTRIMメソッドを使用して変動配列のサイズを増減すると、COUNTの値が変更されます。
obclient> DECLARE
TYPE oblist IS VARRAY(10) OF INTEGER;
t oblist := OBLIST(2,4,6,8,10);
PROCEDURE print_count_and_last IS
BEGIN
DBMS_OUTPUT.PUT('t.COUNT = ' || t.COUNT || ', ');
DBMS_OUTPUT.PUT_LINE('t.LAST = ' || t.LAST);
END print_count_and_last;
BEGIN
print_count_and_last;
t.EXTEND(2);
print_count_and_last;
t.TRIM(4);
print_count_and_last;
END;
/
Query OK, 0 rows affected
t.COUNT = 5, t.LAST = 5
t.COUNT = 7, t.LAST = 7
t.COUNT = 3, t.LAST = 3
上記の例では、変動配列変数を宣言し、4つの要素を初期化して代入します。その後、EXTEND(3)とTRIM(5)を実行した後、変動配列のCOUNTとLASTの値を出力します。
ネスト表での使用
ネスト表において、COUNTはLASTと等しくなります。ただし、ネスト表の途中から要素を削除する場合は、COUNTはLASTより小さくなります。
obclient> DECLARE
TYPE oblist IS TABLE OF INTEGER;
t oblist := OBLIST(2,4,6,8,10);
PROCEDURE print_count_and_last IS
BEGIN
DBMS_OUTPUT.PUT('t.COUNT = ' || t.COUNT || ', ');
DBMS_OUTPUT.PUT_LINE('t.LAST = ' || t.LAST);
END print_count_and_last;
BEGIN
print_count_and_last;
t.EXTEND(2); --末尾に2つのNULL要素を追加
print_count_and_last;
t.DELETE(3); --3番目の要素を削除
print_count_and_last;
FOR i IN 1..8 LOOP
IF t.EXISTS(i) THEN
IF t(i) IS NOT NULL THEN
DBMS_OUTPUT.PUT_LINE('t(' || i || ') = ' || t(i));
ELSE
DBMS_OUTPUT.PUT_LINE('t(' || i || ') = NULL');
END IF;
ELSE
DBMS_OUTPUT.PUT_LINE('t(' || i || ') does not exist');
END IF;
END LOOP;
END;
/
Query OK, 0 rows affected
t.COUNT = 5, t.LAST = 5
t.COUNT = 7, t.LAST = 7
t.COUNT = 6, t.LAST = 7
t(1) = 2
t(2) = 4
t(3) does not exist
t(4) = 8
t(5) = 10
t(6) = NULL
t(7) = NULL
t(8) does not exist
上記の例では、ネスト表変数を宣言し、5つの要素を初期化して代入します。その後、末尾に2つのNULL要素を追加し、3番目の要素を削除した後、ネスト表のCOUNTとLASTの値を出力します。最後に、例中の1番から8番までの要素の状態を出力します。