Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Referenciando tipos definidos pelo usuário Oracle sobre DBLINK?


Eu li a documentação da Oracle e não é muito difícil.

Você precisa adicionar um OID às suas definições de tipo em ambos os bancos de dados.

Você pode usar um GUID como OID.
SELECT SYS_OP_GUID() FROM DUAL; 

SYS_OP_GUID()
--------------------------------
AE34B912631948F0B274D778A29F6C8C

Agora crie seu UDT em ambos os bancos de dados com o SAME OID.
create type testlinktype oid 'AE34B912631948F0B274D778A29F6C8C' as object
( v1 varchar2(10) , v2 varchar2(20) );
/

Agora crie uma tabela:
create table testlink 
( name testlinktype);

insert into testlink values (testlinktype ('RC','AB'));

commit;

Agora você pode selecionar da tabela através do dblink no outro banco de dados:
select * from [email protected]_ora10;

NAME(V1, V2)
--------------------------
TESTLINKTYPE('RC', 'AB')

Se você receber o erro ORA-21700 ao tentar selecionar via dblink pela primeira vez, basta reconectar.