sql >> Base de Datos >  >> RDS >> Oracle

¿Hacer referencia a los tipos definidos por el usuario de Oracle a través de DBLINK?

He leído la documentación de Oracle y no es muy difícil.

Debe agregar un OID a sus definiciones de tipo en ambas bases de datos.

Puede usar un GUID como OID.

SELECT SYS_OP_GUID() FROM DUAL; 

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

Ahora cree su UDT en ambas bases de datos con el MISMO OID.

create type testlinktype oid 'AE34B912631948F0B274D778A29F6C8C' as object
( v1 varchar2(10) , v2 varchar2(20) );
/

Ahora crea una tabla:

create table testlink 
( name testlinktype);

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

commit;

Ahora puede seleccionar de la tabla a través de dblink en la otra base de datos:

select * from [email protected]_ora10;

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

Si obtiene el error ORA-21700 cuando intenta seleccionar a través de dblink la primera vez, simplemente vuelva a conectarse.