2010-03-02 72 views
2

我在存储过程中具有以下语句。它提供的权限不足。 但是,如果我从sql提示符单独运行create语句它创建表。关于在存储过程中立即执行

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

需要做些什么才能让priviliges通过从存储过程立即执行来创建表。不知道如何从sql命令提示符工作

+0

您是否正在使用相同的用户执行存储过程? – 2010-03-02 04:47:33

回答

3

过程不会继承通过角色授予的权限。更多信息here。请检查这是否发生在你身上。

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

+0

非常感谢解决方案 – Arav 2010-03-02 09:10:17

0

是由同一用户创建的过程?如果它是由其他人创建的,并且您只有EXECUTE特权,那么错误是正确的(假设创建过程没有AUTHID CURRENT USER子句)。

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

+0

非常感谢您的信息 – Arav 2010-03-02 09:10:33