Oracle:在另一个模式中创建表,并从同一模式授予select和insert

时间:2012-02-05 20:28:31

标签: sql database oracle plsql logic

我有两个架构。

1.Schema A

2.Schema B

我需要做以下事。

  1. 我想在架构 B 中创建一些表格(与 A 中的某些表格相同)
  2. 然后将数据从 A 移至 B
  3. 现在我想从架构 A 中完成所有这些操作。我编写了一个包,在 A 中执行时会创建 B 中的所有表格,然后创建同义词他们在 A 。然后只需从自己的表中选择数据并插入 B的 表。

    非常重要: 现在,这一切都必须一次性发生。只需执行一个开始块就可以完成整个工作。

    问题: 但是现在这些同义词不起作用,因为架构 A 没有任何权限它在 B 中创建的表格。

    那么有没有办法创建表(从A到B)以及创建时给出的所有权限? 或者可以在执行时在PL-SQL中切换模式,以便可以从B到A授予priv? (我确信这不可能做到,但他们说什么都不可能!:O:P所以要求)

    请帮帮我们!欢迎所有建议!

    这项工作的主要目标是一次完成,只从一个模式中完成。

1 个答案:

答案 0 :(得分:3)

您可以定义一个将在定义者权限下运行的程序,而不是调用者权限

CREATE OR REPLACE PROCEDURE definer_test AUTHID DEFINER IS 
BEGIN
    ...
END definer_test;

您将在模式B中定义此类过程,该过程执行作业并从模式A调用它。