关于存储过程中的Execute Immediate

时间:2010-03-02 03:57:35

标签: sql oracle stored-procedures plsql

我从存储过程获得以下声明。它提供的权限不足。 但是,如果我从sql提示符单独运行create语句,它就是在创建表。

    execute immediate 'create table TEST_ABC(
                    NO_AC NUMBER(8) 
                    , ILL_PER VARCHAR2(15)
                    , INIT_C DATE
                    )';

需要做些什么来通过从存储过程执行立即来创建表的权限。不确定它是如何从sql命令提示符

起作用的

2 个答案:

答案 0 :(得分:3)

程序不会继承通过角色授予的权限。更多信息here。请检查是否发生了这种情况。

解决此问题的一种方法是直接向拥有该过程的帐户授予“CREATE TABLE”权限。

答案 1 :(得分:0)

该程序是否由同一用户创建?如果它是由其他人创建的并且您单独拥有EXECUTE权限,则错误是正确的(假设创建过程没有AUTHID CURRENT USER子句)。

你能创建任何其他表吗?如果可以,那就有一些问题。我们需要更多细节来分析。