授予/撤销角色的Oracle数据库链接

时间:2016-07-14 17:09:41

标签: database oracle plsqldeveloper grant

我有一个关于如何在Oracle PL / SQL中使用数据库链接的问题。假设我在当前数据库中创建了一个数据库链接(Database2),我正在使用它来访问第二个数据库。例如:

select *from CustomerTable@Database2;

Update CustomerTable@Database2
set Comment = 'Hello world!'
where CustomerID = 123;

这些都能顺利完成。

但是,假设我想在Database2中向用户授予角色或撤消角色。可以通过我的数据库链接完成吗?如果是这样,语法是什么?

如果我在Database2中打开PL / SQL会话,则语法为:

REVOKE some_role FROM bsmith;

GRANT some_other_role TO rjones;

有没有办法使用我的数据库链接从原始数据库执行此操作?

1 个答案:

答案 0 :(得分:0)

您可以通过调用远程数据库上的DBMS_SQL包来执行数据库链接上的DDL:

declare
 v_cursor   NUMBER;
 v_ind        number;
 v_ret      varchar2(2000);
BEGIN
  v_cursor := dbms_sql.open_cursor@DB;
  dbms_sql.parse@DB(v_cursor, 'create sequence xyz_seq', dbms_sql.native);
  v_ind := dbms_sql.EXECUTE@DB( v_cursor );
end;
/
相关问题