如何使用来自另一个模式的表编写存储过程?

How to write stored procedures using tables from another schema?

是否需要table在HR用户中才能调用Oracle的函数和过程?当我 运行 从另一个用户那里运行时,它给我一个编译错误。

对于我的项目,我想运行 其他用户的函数和过程。我该如何实施?

要在另一个模式中使用 table 编写函数或过程,table 所有者需要授予我们所需的权限。例如:

SQL>  conn hr/hr
SQL>  grant select on employees to mousumi;

或请超级用户为您完成:

SQL>  conn dba_user/password
SQL>  grant select on hr.employees to mousumi;

可以将特权授予角色,但我们不能使用这些特权来创建过程或视图。为此,特权必须直接授予我们。 Find out more.

当我们引用时,我们需要包含架构名称:

SQL>  select * from hr.employees;

或者我们可以为它创建一个同义词。

SQL>  create synonym employee_table for hr.employees;
SQL>  select * from employee_table;

同义词只是一个标签:它可以是我们喜欢的任何东西,只要它在我们的模式中是唯一的(并且符合 Oracle 命名约定)。 Find out more.