create or replace type sysuser as object ( user_client_name varchar(100), user_version varchar(50), user_name varchar(100), user_password varchar(100), user_db_host varchar(15) ); / declare type sysuser_table is varray(50) of sysuser; gisa_users sysuser_table := sysuser_table( /**/ sysuser('name', 'version', 'db_username', 'db_password', 'host') -- , sysuser(... ); dbl_name varchar2(255); begin for i in gisa_users.first .. gisa_users.last loop dbl_name := 'dbl_'||gisa_users(i).user_name||'_'||gisa_users(i).user_version; commit; begin execute immediate 'alter session close database link '||dbl_name; exception when others then dbms_output.put_line('Não consegui fechar o dblink '||dbl_name||' :/'); end; begin execute immediate 'drop database link '||dbl_name; exception when others then dbms_output.put_line('Não consegui dropar o dblink '||dbl_name||' :('); end; execute immediate 'create database link '||dbl_name||' connect to '||gisa_users(i).user_name||' identified by '||gisa_users(i).user_password||' using ' || q'#'(description = (address_list = (address = (protocol = tcp) (host = #'|| gisa_users(i).user_db_host ||q'#) (port = 1521))) (connect_data = (server = dedicated) (service_name = orcl)))'#'; -- you can change or parm port... or anything else lol dbms_output.put_line('Criado o dblink '||dbl_name); end loop; end; /