【问题标题】:granted table with select but procedure doesn't work授予表与选择但过程不起作用
【发布时间】:2015-08-14 14:25:05
【问题描述】:

我有一个使用 SELECT 授予的表 - 所以我可以使用 select.. 访问该表。

我还可以使用以下方法创建此表的副本:

CREATE TABLE my_table AS
SELECT *
FROM read_only_tbl;

而且还可以手动重新加载 ->

DELETE FROM my_table;
INSERT INTO my_table
SELECT *
FROM read_only_tbl;

但是当我想从程序运行“重新加载”时,它在编译时给我一个错误,即程序看不到“read_only_table”...

CREATE OR REPLACE PROCEDURE prcd_reload AS
BEGIN

    DELETE FROM my_table;
    INSERT INTO my_table
    SELECT *
    FROM read_only_tbl;

   /*** .. rest of code ***/

END;
/

-> PL/SQL: ORA-00942: 表或视图不存在

在程序中访问该表需要什么授权?

【问题讨论】:

  • 为了在过程中访问表,选择必须直接授予用户,而不是通过角色。
  • @Tarun: 没错 :) 因为 SELECT 被授予角色(而不是直接授予用户)
  • 这个link 可能会帮助你更好地理解这一点
  • @Crazy2crack:谢谢,我会处理它

标签: sql oracle


【解决方案1】:

感谢@Tarun!

他的回答是正确的:

为了在过程中访问表,select 必须是 直接授予用户,而不是通过角色授予。

【讨论】:

    猜你喜欢
    • 2017-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    • 2012-12-05
    • 2014-08-10
    相关资源
    最近更新 更多