EXECUTE IMMEDIATE是Oracle中使用动态SQL的一种方法,可以直接执行,也可以在存储过程中调用。然而在存储过程中调用可能会遇到权限不足的问题,如在存储过程中执行重建索引语句:
sqlt := 'alter index ' || idx.index_name || ' rebuild online ';
EXECUTE IMMEDIATE sqlt;
会报权限不足:如下
ORA-01031: 权限不足
ORA-06512: 在"bdc.proc_rebuild_part_index", line 5
ORA-06512: 在line 1
既然提示说权限不足,所以问题的解决方法就是要赋予用户scott Create Any Table的权限,以SYS登录,然后执行:
GRANT CREATE ANY TABLE TO SCOTT
再重新执行下刚才的存储过程,成功。
本文详细介绍了在Oracle环境中,如何通过赋予特定权限解决在存储过程中执行动态SQL(如重建索引)时出现的权限不足错误。通过案例演示了在SYS用户下执行GRANT语句授予SCOTT用户CREATEANYTABLE权限,进而成功执行存储过程。
407

被折叠的 条评论
为什么被折叠?



