sql - 甲骨文 : Create table in another schema and grant select and insert on it from the same schema

标签 sql database oracle plsql logic

我有两个模式。

1.架构A

2.架构B

我需要做以下事情。

  1. 我想在架构 B 中创建一些表(与 A 中的一些表相同)
  2. 然后将数据从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/

相关文章:

php - 如何摆脱 � 使用 php

sql - MYSQL 中的动态列名

mysql - 子查询返回超过 1 行?

sql - Oracle 10g 中的 RECORD TYPE 值错误太多

sql - 查询以找到平均加权价格

mysql - SQL查询验证-简单

mysql - 使用jsp中的按钮检索id和删除查询

database - 如何使用较旧的日期字段删除 SQL 中的重复行

SQL - 纬度/经度距离查询 - 如果距离 = 0,则不返回任何内容

sql - Oracle SQL。如何显示立即执行语句的结果