oracle sql varray包含一个元素

was*_*256 3 oracle plsql varray

我有这样的类型声明:

  FUNCTION ...
  IS 
     TYPE stati_va IS VARRAY (10000) OF varchar(1);
     stati       stati_va;
     v_counter   INTEGER  := 0;
  BEGIN
      stati := stati_va ();

      --this is actually in a loop so the array contains more values
      v_counter := v_counter + 1;
      stati.EXTEND;
      stati (v_counter) := '4';


      --here I would like to determine if the array 'stati' contains a value
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经尝试了以下但是这给了我一个错误

      IF '4' member of stati then  <- COMPILE error
      IF '4' IN stati then         <- COMPILE error
Run Code Online (Sandbox Code Playgroud)

我知道循环数组是可能的,但这有点不方便,因为我需要构建这样的东西:

     IF array contains '4' then
     elsif array contains '3' then
     elseif array contains '2' then
     ...
Run Code Online (Sandbox Code Playgroud)

Lal*_*r B 6

你可以使用这个条件:

IF 'element' member OF <my_array> THEN
Run Code Online (Sandbox Code Playgroud)

例如,

SQL> SET SERVEROUTPUT ON
SQL> DECLARE
  2  TYPE v_array
  3  IS
  4    TABLE OF VARCHAR2(200);
  5    my_array v_array;
  6  BEGIN
  7    my_array := v_array('1','2','3','4');
  8    IF '4' member OF my_array THEN
  9      dbms_output.put_line('yes');
 10    ELSE
 11      dbms_output.put_line('no');
 12    END IF;
 13  END;
 14  /
yes

PL/SQL procedure successfully completed.

SQL>
Run Code Online (Sandbox Code Playgroud)