Oracle 从索引不在集合中的employee表中选择

Oracle 从索引不在集合中的employee表中选择,oracle,plsql,Oracle,Plsql,我有如下程序: SET serveroutput ON DECLARE TYPE list_of_names_t IS TABLE OF emp.emp_index%TYPE; ignoreIndexes LIST_OF_NAMES_T := List_of_names_t(); BEGIN -- Logic here which fills the values in the collection ignore

我有如下程序:

SET serveroutput ON 
    DECLARE 
        TYPE list_of_names_t 
          IS TABLE OF emp.emp_index%TYPE; 
        ignoreIndexes LIST_OF_NAMES_T := List_of_names_t();
    BEGIN
    -- Logic here which fills the values in the collection ignoreIndexes and           considerIndexes  
    -- Line XX   
END;
在第XX行,我想添加下面的一行


SELECT*FROM emp,其中emp_index不在ignoreindex中,但无法获得正确的语法,如何实现这一点?

如果集合类型是在
架构级别声明的,则它可以在
SQL语句中使用,也可以动态使用。因此,请执行以下步骤以实现这一点

  • 创建或替换对象名称的类型列表(emp索引号)

  • 创建或替换名称列表的类型列表是名称列表的列表

  • 创建匿名块,如下所示:

    SET serveroutput ON 
    DECLARE 
       ignoreIndexes LIST_OF_NAMES_T := List_of_names_t();
       emp_cur  SYS_REFCURSOR;
    BEGIN
       -- Populate the collection with some data
     SELECT list_of_names(LEVEL) 
         BULK COLLECT INTO ignoreIndexes  
     FROM dual CONNECT BY LEVEL<21;
    
    
    OPEN emp_cur FOR 
              SELECT * 
               FROM EMP e 
                   WHERE NOT EXISTS(SELECT 1 
                                     FROM   table(ignoreIndexes) tt 
                                     WHERE  tt.emp_index = e.emp_index
                                    );   
    
    END;
    
    打开服务器输出
    声明
    ignoreIndexes LIST_OF_NAMES_T:=LIST_OF_NAMES_T();
    emp_cur SYS_REFCURSOR;
    开始
    --用一些数据填充集合
    选择名称列表(级别)
    批量收集到IgnoreIndex中
    从双连接到分层连接