PLSQL执行立即丢弃索引需要什么权限

时间:2018-04-07 11:36:01

标签: plsql

我有一个标准的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;

1 个答案:

答案 0 :(得分:0)

我想知道为什么不使用all_indexes的owner字段构造SQL。更好的是,将user1推送到查询中,以便我们仅获得属于user1的索引名称。