Is it possible to execute dynamic PL/SQL on a remote database via a databse link?
I'm looking for something like:
l_stmt := 'begin null; end;';
execute immediate l_stmt@dblink;
The syntax above is obviously wrong, I get PLS-00201: identifier 'L_STMT@DBLINK' must be declared.
It is possible to create a procedure remotely and then execute it. Is there a way to execute code without creating a remote procedure?
EDIT: I'm trying to work around passing a type over DB link. A remote procedure requires a parameter of type t_id_tab which is defined on the remote DB as
CREATE OR REPLACE TYPE T_ID_TAB AS TABLE OF NUMBER(12)
You are missing execute in above example. Please see below:
I would think that you would just qualify the object names in the procedure, rather than qualifying the procedure itself.
You can execute arbitary code on the remote database by calling the DBMS_SQL package there.
Sample:
Note that the reference to DBMS_SQL.NATIVE is local, not remote. You can't reference remote package constants, but presumably the actual value of this constant is the same in both databases.
Have you tried to create the array on a package instead of a type? I mean:
May be, with this way works, I've not tried...