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番までの要素の値または状態を出力します。