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番目の要素の値またはステータスが出力されます。