Vérifier si une collection d'élément existe dans Oracle

- Je créer un type simple:

create or replace TYPE SIMPLE_TYPE AS OBJECT (ID NUMBER(38), NAME VARCHAR2(20));

Test Simple:

DECLARE
   TYPE ObjectList IS TABLE OF SIMPLE_TYPE;
   tmp SIMPLE_TYPE := SIMPLE_TYPE(1, 'a');
   o ObjectList := new ObjectList(SIMPLE_TYPE(2, 'a'), SIMPLE_TYPE(3, 'a'));
BEGIN
   IF tmp.EXISTS(tmp) THEN
    dbms_output.put_line('OK, exists.');
   END IF;
END;

J'obtiens une exception: PLS-00302: composant 'EXISTE" doit être déclarée

Mais cet exemple:

DECLARE
   TYPE NumList IS TABLE OF INTEGER;
   n NumList := NumList(1,3,5,7);
BEGIN
   n.DELETE(2);
   IF n.EXISTS(1) THEN
      dbms_output.put_line('OK, element #1 exists.');
   END IF;
   IF n.EXISTS(3) = FALSE THEN
      dbms_output.put_line('OK, element #2 has been deleted.');
   END IF;
   IF n.EXISTS(99) = FALSE THEN
      dbms_output.put_line('OK, element #99 does not exist at all.');
   END IF;
END;

Est-il possible de mettre en œuvre EXISTE méthode dans SIMPLE_TYPE type?

Êtes-vous sûr que vous voulez tmp.EXISTS, pas o.EXISTS? tmp est scalaire, même après avoir corrigé son type. Ce n'est pas une collection.

OriginalL'auteur Michał Ziober | 2009-08-28