【问题标题】:ORACLE11g, table or view does not exist while creating procedureORACLE11g,创建过程时表或视图不存在
【发布时间】:2014-04-24 07:35:06
【问题描述】:

db中有两个schema,我创建了一个物化视图——'MV1'并成功授权,在其他schema中选择就可以了。

GRANT select ON schemaA.MV_CA_REVENU_MS_GEO TO read;
/
GRANT select ON schemaA.MV_CA_REVENU_MS_GEO TO write;
/
GRANT update ON schemaA.MV_CA_REVENU_MS_GEO TO write;
/

但是在编译过程时,有错误消息说“MV1”的“表或视图不存在”。程序代码为:

create or replace 
PROCEDURE                     SP_NAME (args ... ) is
  .
  .
begin
    INSERT INTO tableName(
        .
        .
      ) SELECT ...
          FROM (SELECT ...
                  FROM MV1  -- **schemaA.MV1 doesn't work either** 
                 WHERE 
end SP_NAME;
/
GRANT EXECUTE ON schemaB.SP_NAME TO read;
GRANT DEBUG ON schemaB.SP_NAME TO read;
GRANT EXECUTE ON schemaB.SP_NAME TO write;
GRANT DEBUG ON schemaB.SP_NAME TO write;
/
CREATE or replace PUBLIC SYNONYM SP_NAME FOR schemaB.SP_NAME;
/

我尝试在 MV1 前面添加 schemaA,它不起作用。我还需要检查其他步骤吗?

【问题讨论】:

  • 我认为这与 stackoverflow.com/questions/8599393/… 相同。所以只需检查那里的解决方案。您需要使用直接授权而不是角色。
  • 就这样吧!抱歉我的疏忽,谢谢。

标签: sql oracle oracle11g procedure


【解决方案1】:

是“读取”和“写入”模式名称还是角色名称?在编译存储过程、函数和包时,Oracle 中通过角色间接授予的权限不可用

【讨论】:

    猜你喜欢
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    • 2012-02-19
    • 1970-01-01
    • 2011-05-11
    • 1970-01-01
    • 2017-02-07
    • 2010-11-01
    相关资源
    最近更新 更多