oracle在儲存過程中執行DDL語句

2021-09-30 10:03:47 字數 426 閱讀 7992

預設情況下,oracle對儲存過程是使用所有者許可權,也就是說:如果使用者b條用a 使用者下的儲存過程,使用的是a使用者的物件許可權和系統許可權。如果a使用者沒有許可權的話,使用者b執 行就會報錯。

所以第一種辦法就是授予使用者執行儲存過程中ddl的許可權。

另一種辦法是通過在儲存過程中使用authid current_user來講儲存過程轉化為呼叫者許可權。這樣每次呼叫儲存過程,都是動態根據呼叫者的許可權構成去判定是否有許可權。

eg:

create or replace procedure p_test

authid current_user

isbegin

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

end p_test;

/

在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 在儲存過程中定義動態sql

表結構 create table item prop pid integer,name varchar2 20 is key prop integer,is sale prop integer,is color prop integer,parent pid integer,parent vid v...

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

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