sql >> Databasteknik >  >> RDS >> Oracle

Oracle sql-typer över dblink

Jag har haft liknande problem tidigare. Sedan kom jag till slutsatsen att i grunden är Oracles db-länkar "trasiga" för allt annat än enkla SQL-typer (speciellt UDT, CLOBS kan ha problem, XMLType kan också). Om du kan få OID-lösningen att fungera så lycka till.

Lösningen jag tog till var att använda en Java Stored-procedur istället för DB-länken.

Egenskaper för den lagrade Java-proceduren:

  1. Kan returnera en "rik uppsättning typer", nästan alla komplexa typer (UDT, tabeller/arrayer/varrays) se Oracle onlinedokumentation för detaljer. Oracle gör ett mycket bättre jobb med att sortera komplexa (eller rika) typer från java än från en DBLink.
  2. Lagrad Java kan förvärva "standardanslutningen" (körs i samma session som SQL-anslutningen till db - inga autentiseringsproblem).
  3. Lagrad Java anropar PL/SQL-proc på fjärr-DB, och java JDBC-lagret gör marshaling från fjärr-DB.
  4. Lagrad Java paketerar resultatet och returnerar resultaten till SQL- eller PL/SQL-lagret.

Det är lite jobb, men om du har lite Java bör du kunna "klippa ut och klistra" ihop en lösning från Oracle-dokumentationen och provet.

Jag hoppas att detta hjälper.



  1. EF Core GroupBy med Select Distinct Count

  2. MySQL anser att "е" och "ё" är lika, hur ställer jag in den för att betrakta dem som olika?

  3. En titt på Oracle Group-by Bug

  4. Hur man hittar de tre översta kolumnsummorna med SQL