我有两个模式。
1.架构A
2.架构B
我需要做以下事情。
- 我想在架构 B 中创建一些表(与 A 中的一些表相同)
- 然后将数据从A 移动到B。
现在我想从架构 A 执行所有这些操作。我编写了一个程序包,当在 A 中执行时,它将在 B 中创建所有表,然后为他们在A。然后将从它自己的表中选择数据并插入到 B 的 表中。
非常小: 现在这整件事必须一次性完成。只需执行一个开始 block 就可以完成整个工作。
问题: 但是现在同义词不起作用,因为架构 A 在它在 B 中创建的表。
那么有没有办法用创建时给定的所有权限创建表(从 A 到 B)? 或者可以在执行时在 PL-SQL 中切换模式,以便可以将特权从 B 授予 A 吗? (我敢肯定这是做不到的,但他们说没有什么是不可能的!:O :P 所以问)
请大家帮帮我!欢迎所有建议!
这项工作的主要目标是一次完成,并且只从一个架构。
最佳答案
您可以定义一个过程,它将在定义者权限下运行,而不是调用者权限
CREATE OR REPLACE PROCEDURE definer_test AUTHID DEFINER IS
BEGIN
...
END definer_test;
您可以在模式 B 中定义这样一个过程,它完成工作并从模式 A 调用它。
关于sql - 甲骨文 : Create table in another schema and grant select and insert on it from the same schema,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9152719/