You can use the EXISTS method to check whether a specified element exists in a variable-size array (or varray) or nested table.
Applicability
This topic applies only to OceanBase Database Enterprise Edition. OceanBase Database Community Edition provides only MySQL mode.
EXISTS(n) returns TRUE if the nth element exists in the collection, and returns FALSE if otherwise. If n exceeds the valid range, EXISTS returns FALSE without causing the predefined SUBSCRIPT_OUTSIDE_LIMIT exception.
EXISTS(n) returns FALSE for deleted elements, even if the DELETE method retains placeholders for them.
Example:
obclient> DECLARE
TYPE emp_id IS TABLE OF NUMBER;
n EMP_ID := emp_id(2,4,6,8);
BEGIN
n.DELETE(2); -- Delete the second element.
n.TRIM; -- Trim the last element.
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
The preceding example initializes and assigns values to four elements in a nested table, deletes the second element, trims the last element, and outputs the values or states of elements 1 to 6.