1. 程式人生 > >儲存過程中呼叫EXECUTE IMMEDIATE的“許可權不足”

儲存過程中呼叫EXECUTE IMMEDIATE的“許可權不足”

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

再重新執行下剛才的儲存過程,成功。