Php 授予Oracle上的角色

Php 授予Oracle上的角色,php,oracle,roles,Php,Oracle,Roles,我正在用oracle和php为任务创建一个数据库,我必须展示角色的使用。我创建了一个名为employee的新角色,并将其分配给名为employee1的新用户 CREATE ROLE read_only; GRANT create session TO read_only; GRANT select ON workson TO read_only; GRANT select ON employee TO read_only; GRANT select ON project TO read_only

我正在用oracle和php为任务创建一个数据库,我必须展示角色的使用。我创建了一个名为employee的新角色,并将其分配给名为employee1的新用户

CREATE ROLE read_only;
GRANT create session TO read_only;
GRANT select ON workson TO read_only;
GRANT select ON employee TO read_only;
GRANT select ON project TO read_only;
GRANT select ON department TO read_only;

CREATE ROLE employee;
GRANT read_only TO employee;
GRANT update ON employee TO employee;
GRANT insert ON workson TO employee;

Create user employee1 identified by qwerty1;
GRANT employee TO employee1;

为什么在作为雇员连接时使用任何SELECT 1表示没有这样的表。选择*from employee表示没有表。我的角色设置有误吗?

你的助学金似乎还不错。假设
employee1
用户不拥有
employee
表,您需要在
SELECT
中使用表的所有者限定表名。例如,如果我们谈论的是
hr
用户拥有的
employee
表,那么您需要

SELECT *
  FROM hr.employee;
如果您不想限定表名,那么有几个选项。首先,您可以创建同义词。您可以在
employee1
模式中创建仅适用于
employee1
用户的专用同义词

CREATE SYNONYM employee
   FOR hr.employee;
也可以创建适用于所有用户的公共同义词

CREATE PUBLIC SYNONYM employee
   FOR hr.employee;
第二个选项是在连接后设置您的
当前\u架构

ALTER SESSION SET current_schema=hr;
如果有适当的同义词,或者已经设置了
当前模式
,则不必在表名前面加上表的所有者