2010-03-02 69 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