Oracle儲存過程中建立表的許可權

2022-05-05 22:48:13 字數 582 閱讀 2574

**:

sql> exec p_create_table;

ora-01031: 許可權不足

即使擁有dba role,也不能建立表。role在儲存過程中不可用。

遇到這種情況,我們一般需要顯式進行系統許可權,如grant create table to eu_user;

但這種方法太麻煩,有時候可能需要進行非常多的授權才能執行儲存過程

實際上,oracle給我們提供了在儲存過程中使用role許可權的方法:

修改儲存過程,加入authid current_user時儲存過程可以使用role許可權。

create or replace procedure p_create_table

authid current_user is

begin

execute immediate 'create table crm_newtable(id number)';

end p_create_table;

再嘗試執行:

sql> exec p_create_table;

pl/sql procedure successfully completed

在ORACLE儲存過程中建立臨時表

create procedure pro asstr varchar2 100 begin str create global temporary table tablename col1 varchar2 10 col2 number on mit preserve rows execute im...

在ORACLE儲存過程中建立臨時表

create procedure pro asstr varchar2 100 begin str create global temporary table tablename col1 varchar2 10 col2 number on commit preserve rows execute...

在ORACLE儲存過程中建立臨時表

在oracle儲存過程中建立臨時表 儲存過程裡不能直接使用ddl語句,所以只能使用動態sql語句來執行 on commit delete rows 說明臨時表是事務指定,每次提交後oracle將截斷表 刪除全部行 on commit preserve rows 說明臨時表是會話指定,當中斷會話時or...