0

cis605 确实存在 emp 表,我想为用户分配权限。对我做错了什么有任何想法吗?

SQL> grant select on emp to user;

     Grant succeeded.

     SQL> connect user
     Enter password:
     Connected.
     SQL> select * from emp;
     select * from emp
                   *
     ERROR at line 1:
     ORA-00942: table or view does not exist

我也尝试过不同的做法

     SQL> connect cis605
     Enter password:
     Connected.
     SQL> grant select on system.emp to chap7;
     grant select on system.emp to chap7
                             *
     ERROR at line 1:
     ORA-00942: table or view does not exist

这是我应该使用的声明

SQL> SELECT * from cis605.emp;

4

1 回答 1

2

在第一种情况下,它不起作用,因为您需要:

  1. 引用表名,包括它所在的模式。即

    SELECT * FROM schema.EMP;


2. 创建一个 [public] 同义词,以便能够“看到”表,而无需在每个 SQL 语句中包含模式。


在第二种情况下,您尝试引用架构,但得到了错误的架构。EMP 表通常在 SCOTT 模式中找到,而不是在 SYSTEM 中。尽管在您的情况下,您可能需要执行以下操作:

grant select on cis605.emp to chap7;

此外,拥有一个名为“USER”的用户是个坏主意——它是一个 Oracle 关键字。(虽然我猜这可能只是为了举例)

于 2011-10-22T06:55:18.667 回答