我有一个关于如何在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;
有没有办法使用我的数据库链接从原始数据库执行此操作?
答案 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;
/