Benutzerdefinierte Oracle-Typen über DBLINK referenzieren?

Ich arbeite in zwei verschiedenen Oracle-Schemas an zwei verschiedenen Oracle-Instanzen. Ich habe verschiedene Typen und Typensammlungen definiert, um Daten zwischen diesen Schemas zu übertragen. Das Problem, auf das ich stoße, ist, dass der Typ zwar genau die gleichen Definitionen hat (dieselben Skripten, die zum Erstellen beider Mengen in den Schemas verwendet wurden), Oracle sie jedoch als unterschiedliche Objekte ansieht, die nicht austauschbar sind.

Ich habe darüber nachgedacht, das eingehende Remote-Typ-Objekt als denselben lokalen Typ zu konvertieren, aber es wird eine Fehlermeldung angezeigt, dass Typen über dblinks hinweg referenziert werden.

rundsätzlich mache ich Folgendes:

DECLARE
  MyType  LocalType; -- note, same definition as the RemoteType (same script)
BEGIN
  REMOTE_SCHEMA.PACKAGE.PROCEDURE@DBLINK( MyType );  -- MyType is an OUT param
  LOCAL_SCHEMA.PACKAGE.PROCEDURE( MyType ); -- IN param
END;

Das schlägt fehl, weil der REMOTE-Prozeduraufruf MyType nicht verstehen kann, da LocalType und RemoteType als unterschiedliche Objekttypen behandelt werden.

Ich habe versucht, MyType wie folgt zu deklarieren:

  MyType REMOTE_SCHEMA.RemoteType@DBLINK;

aber ich bekomme einen anderen Fehler über das Referenzieren von Typen über Dblinks. Das CASTing zwischen Typen funktioniert auch nicht, da ich zum Casting den Remote-Typ über dblink referenzieren muss - dasselbe Problem, derselbe Fehler. Ich habe auch versucht, SYS.ANYDATA als Objekt zu verwenden, das zwischen den beiden Instanzen wechselt, aber es wird ein ähnlicher Fehler angezeigt.

Irgendwelche Ideen

AKTUALISIEREN Versucht, den Objekttyp auf beiden Seiten des DBLINK mit derselben OID zu deklarieren (manuell abgerufen mitSYS_OP_GUID()) aber Oracle "sieht" die beiden Objekte immer noch als unterschiedlich und gibt den Fehler "Falsche Anzahl oder Art von Argumenten" aus.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage