我从存储过程获得以下声明。它提供的权限不足。 但是,如果我从sql提示符单独运行create语句,它就是在创建表。
execute immediate 'create table TEST_ABC(
NO_AC NUMBER(8)
, ILL_PER VARCHAR2(15)
, INIT_C DATE
)';
需要做些什么来通过从存储过程执行立即来创建表的权限。不确定它是如何从sql命令提示符
起作用的答案 0 :(得分:3)
程序不会继承通过角色授予的权限。更多信息here。请检查是否发生了这种情况。
解决此问题的一种方法是直接向拥有该过程的帐户授予“CREATE TABLE”权限。
答案 1 :(得分:0)
该程序是否由同一用户创建?如果它是由其他人创建的并且您单独拥有EXECUTE权限,则错误是正确的(假设创建过程没有AUTHID CURRENT USER
子句)。
你能创建任何其他表吗?如果可以,那就有一些问题。我们需要更多细节来分析。