【发布时间】: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:谢谢,我会处理它