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中
从双连接到分层连接