Вам необходимо включить DBMS_OUTPUT на удаленной системе и вручную получить строки:
Если в удаленной системе есть процедура с именем " pr_remote ":
create or replace procedure pr_remote as
begin
dbms_output.put_line('In remote procedure on:');
dbms_output.put_line('SERVER_HOST='||sys_context('userenv','SERVER_HOST'));
dbms_output.put_line('DB_NAME='||sys_context('userenv','DB_NAME'));
end pr_remote;
В базе данных DB_LOCAL есть ссылка на базу данных, которая позволяет получить доступ к DB_REMOTE:
create database link **db_link_to_remote**
connect to remote_user
identified by remote_password
using 'db_remote';
. Вам необходимо включить удаленный DBMS_OUTPUT и получить каждую строку с циклом:
Declare
/* how to get DBMS_OUTPUT from a remote system */
sbLine varchar2(1000);
nuStatus integer;
Begin
Dbms_Output.Put_Line('My local is on SERVER_HOST='||sys_context('userenv','SERVER_HOST')||'|DB_NAME='||sys_context('userenv','DB_NAME'));
--
Dbms_Output.Put_Line('Enable DBMS_OUTPUT remote');
dbms_output.enable@db_link_to_remote;
--
Dbms_Output.Put_Line('Call remote procedure');
pr_remote@db_link_to_remote;
loop
DBMS_OUTPUT.GET_LINE@db_link_to_remote(sbLine,
nustatus);
--
Dbms_Output.Put_Line(sbLine);
exit when nustatus<>0;
end loop;
dbms_output.disable@db_link_to_remote;
End;