原文链接
终于找到毛病了,原来是没有权限。虽然当前用户执行语句是有权限的,但是放到存储过程中就必须要显式的赋个权限给当前用户。以下是我找到的资料,贴出来给大家也看一下吧。
=====================
【IT168 技术文档】我们知道,用户拥有的role权限在存储过程是不可用的。如:
SQL>
select
*
from
dba_role_privs
where
grantee=
'SUK'
;
GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE
SUK DBA
NO
YES
SUK
CONNECT
NO
YES
SUK RESOURCE
NO
YES
create
or
replace
procedure
p_create_table
is
begin
Execute
Immediate
'create table create_table(id int)'
;
end
p_create_table;
SQL>
exec
p_create_table;
begin
p_create_table;
end
;
ORA-01031: 权限不足
ORA-06512: 在
"SUK.P_CREATE_TABLE"
, line 3
ORA-06512: 在line 1
create
or
replace
procedure
p_create_table
Authid
Current_User
is
begin
Execute
Immediate
'create table create_table(id int)'
;
end
p_create_table;
SQL>
exec
p_create_table;
PL/SQL
procedure
successfully completed