EXISTSは、指定された要素が可変配列またはネスト表に存在するかどうかを判断します。
適用対象
この内容はOceanBaseデータベースEnterprise Editionにのみ適用されます。OceanBaseデータベースCommunity EditionはMySQLモードのみを提供します。
コレクションの n 番目の要素が存在する場合、EXISTS(n) は TRUE を返し、そうでない場合は FALSE を返します。n が範囲を超える場合、EXISTS は FALSE を返し、事前定義された例外 SUBSCRIPT_OUTSIDE_LIMIT は発生しません。
削除された要素については、DELETE がプレースホルダーを保持していても、EXISTS(n) は FALSE を返します。
例:
obclient> DECLARE
TYPE emp_id IS TABLE OF NUMBER;
n EMP_ID := emp_id(2,4,6,8);
BEGIN
n.DELETE(2); --2番目の要素を削除
n.TRIM; --最後の要素を切り捨てる
FOR i IN 1..5 LOOP
IF n.EXISTS(i) THEN
DBMS_OUTPUT.PUT_LINE('n(' || i || ') = ' || n(i));
ELSE
DBMS_OUTPUT.PUT_LINE('n(' || i || ') has no value');
END IF;
END LOOP;
END;
/
Query OK, 0 rows affected
n(1) = 2
n(2) has no value
n(3) = 6
n(4) has no value
n(5) has no value
上記の例では、ネスト表に4つの要素を初期値として代入し、2番目の要素を削除し、最後の要素を切り捨てた後、1番から6番の要素の値または状態を出力します。