我有一个标准的DB过程来删除在user1架构中创建的表(下面的代码)上的索引。当以user2运行时,“执行立即'删除索引”因ORA-01418而失败:指定的索引不存在。
我不明白游标如何返回索引,但是在运行drop命令时不存在。
有人可以帮助解释user1表/索引上的privs user2需求以及应该使用的AUTHID吗?
create or replace procedure dropIndexes(pTableName IN VARCHAR2) AUTHID
CURRENT_USER IS
CURSOR c1(pTableName VARCHAR2) IS
select index_name
from all_indexes
where table_name = pTableName;
BEGIN
FOR c1Rec IN c1(pTableName) LOOP
execute immediate 'drop index user1.'||c1Rec.index_name;
END LOOP;
END dropIndexes;
答案 0 :(得分:0)
我想知道为什么不使用all_indexes的owner字段构造SQL。更好的是,将user1推送到查询中,以便我们仅获得属于user1的索引名称。