【发布时间】:2021-09-22 09:15:11
【问题描述】:
Oracle Database 12c Standard Edition Release 12.2.0.1.0 - 64bit Production
我在尝试创建包时收到上述消息。 我可以用一个非常简单的过程和选择语句来模拟。 My understanding is that have SQL select access for a user does not translate to PL/SQL (package) access for the same user, and that an option is to use roles.这对我不起作用。
这一切都是由同一个用户完成的(不是 apex_180100)。
显示问题:
此 SQL 有效。这没有意义,但证明我可以从表格中选择。
SELECT 1
FROM apex_180100.wwv_flow_activity_log l,
apex_180100.wwv_flow_worksheet_rpts r
WHERE l.ir_report_id IS NOT NULL
AND l.flow_id = 100
AND l.worksheet_id = r.worksheet_id
AND l.ir_report_id = r.id
AND l.flow_id = r.flow_id
AND l.step_id = r.page_id;
我将选择权授予一个角色
GRANT SELECT ON apex_180100.wwv_flow_worksheet_rpts TO PRIV_FULL_TABLE;
GRANT SELECT ON apex_180100.wwv_flow_activity_log TO PRIV_FULL_TABLE;
我将我的角色授予我的程序(最终我将授予我的包)
GRANT PRIV_FULL_TABLE TO PROCEDURE p_test;
我在创建这个简单的示例过程时遇到错误。
create OR REPLACE procedure p_test is
V_TEST NUMBER;
begin
SELECT 1
INTO V_TEST
FROM apex_180100.wwv_flow_activity_log l,
apex_180100.wwv_flow_worksheet_rpts r
WHERE l.ir_report_id IS NOT NULL
AND l.flow_id = 100
AND l.worksheet_id = r.worksheet_id
AND l.ir_report_id = r.id
AND l.flow_id = r.flow_id
AND l.step_id = r.page_id;
end;
PL/SQL: ORA-01031: insufficient privileges compilation error
【问题讨论】:
-
你确定你有足够的权限来创建一个过程吗?通常,对于您无权从中选择的表或视图,Oracle 会说“对象不存在”
-
是的,我可以运行以下命令。创建 OR REPLACE 过程 p_test 是 V_TEST NUMBER;开始 SELECT 1 INTO V_TEST FROM dual ;结束;
标签: oracle plsql plsql-package