sql >> Databasteknik >  >> RDS >> Oracle

Refererar du till Oracle användardefinierade typer över DBLINK?

Jag har läst Oracle Documentation och det är inte särskilt svårt.

Du måste lägga till ett OID till dina typdefinitioner i båda databaserna.

Du kan använda en GUID som OID.

SELECT SYS_OP_GUID() FROM DUAL; 

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

Skapa nu din UDT i båda databaserna med SAME OID.

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

Skapa nu en tabell:

create table testlink 
( name testlinktype);

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

commit;

Nu kan du välja från tabellen via dblinken i den andra databasen:

select * from [email protected]_ora10;

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

Om du får felmeddelandet ORA-21700 när du försöker välja via dblinken första gången är det bara att ansluta igen.



  1. Psycopg2 Infoga i tabell med platshållare

  2. Simulerad OLAP

  3. Ringer du Oracles lagrade procedur från C#?

  4. Importera filstorleksgräns i PHPMyAdmin