Oracle 在视图中插入“赋予权限不足”编译包时出错
视图: 包正文中的错误: 行: 插入vw_XYZ 面临的错误: 包体的编译错误 错误:PL/SQL:ORA-01031:权限不足 请注意:Oracle 在视图中插入“赋予权限不足”编译包时出错,oracle,view,insert,privileges,oracle19c,Oracle,View,Insert,Privileges,Oracle19c,视图: 包正文中的错误: 行: 插入vw_XYZ 面临的错误: 包体的编译错误 错误:PL/SQL:ORA-01031:权限不足 请注意: 我们只在19c数据库中面对这个问题。在12c数据库版本中,它成功编译无法通过连接视图(包括版本12c)插入内容。谢谢@BarbarosÖzhan。。。但在12c版本中。。。我的包已成功编译。你能详细说明一下吗?不客气。您确定没有像第一个案例那样尝试插入tb_abc吗?顺便说一句,该错误似乎与缺少权限有关。事实上,即使您在当前模式中有该视图,也无法通过它插入。
我们只在19c数据库中面对这个问题。在12c数据库版本中,它成功编译无法通过连接视图(包括版本12c)插入内容。谢谢@BarbarosÖzhan。。。但在12c版本中。。。我的包已成功编译。你能详细说明一下吗?不客气。您确定没有像第一个案例那样尝试插入tb_abc吗?顺便说一句,该错误似乎与缺少权限有关。事实上,即使您在当前模式中有该视图,也无法通过它插入。是的@BarbarosÖzhan,我确信我们在这两个版本中做的事情完全相同,因为我们刚刚导入了从12c版本到19c版本的所有内容。没有人工交互。该视图与包的架构相同。它与权限有关。19c上的用户没有12c上的所有权限。这可能与该数据库中的其他用户有关,例如,如果vw_XYZ归其他人所有,而不是编译该软件包的用户。
CREATE OR REPLACE VIEW vw_XYZ AS
SELECT "TRN_REF_NO","ESN","COMPONENT","AMOUNT","CURRENCY","WAIVER","CHG_DESC"
FROM
( WITH DATA AS
( SELECT LEVEL L FROM DUAL CONNECT BY LEVEL <= 5 )
SELECT TRN_REF_NO,1 "ESN",'CHG_AMT_'||L "COMPONENT",
DECODE(L,1,CHG_AMT,2,CHG_AMT_1,3,CHG_AMT_2,4,CHG_AMT_3,5,CHG_AMT_4) "AMOUNT",
DECODE(L,1,CHG_CCY,2,CHG_CCY_1,3,CHG_CCY_2,4,CHG_CCY_3,5,CHG_CCY_4) "CURRENCY",
DECODE(L,1,WAIVER,2,WAIVER1,3,WAIVER2,4,WAIVER3,5,WAIVER4) "WAIVER",
DECODE(L,1,CHG_DESC,2,CHG_DESC1,3,CHG_DESC2,4,CHG_DESC3,5,CHG_DESC4) "CHG_DESC"
FROM DATA
JOIN tb_abc
ON NVL(DECODE(L,1,CHG_AMT,2,CHG_AMT_1,3,CHG_AMT_2,4,CHG_AMT_3,5,CHG_AMT_4),'-1') <> -1
ORDER BY TRN_REF_NO );