Oracle-sql-Datentypen über dblink
Habe ich zwei Schemata: A und B (Oracle 9). Bei der Einen gibt es einen dblink B. An der B gibt es ein Paket, dass ich Anrufe von A. Verfahren im B-Paket kann gibt unterschiedliche zählergebnisse und ich denke, dass wieder eine Sammlung ist ein besserer Weg, aus diesem Grund.
create type B.tr_rad as object (
name varchar2(64)
,code number
,vendor number
,val varchar2(255)
,num number
);
create type B.tt_rad as varray(256) of B.tr_rad;
Aber von Einem Schema kann ich nicht verwenden tt_rad geben, denn mithilfe der SQL-Typen von dblink wird nicht unterstützt. DBMS_SQL wird nicht unterstützt-Cursor. Erstellen Sie Typen mit der gleichen OID ist unmöglich.
Denke ich temporäre Tabellen verwenden. Aber Erstens ist es nicht gut, dass (nachdem die remote-Funktion gibt den Wert zurück, aufrufende Seite muss wählen Sammlung von remote-Tabelle). Und es gibt die Angst vor einer Verlangsamung der arbeiten mit temporären Tabellen.
Vielleicht kennt die alternative Interaktion?
InformationsquelleAutor drnk | 2009-03-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte ähnliche Probleme in der Vergangenheit. Dann kam ich zu dem Schluss, dass grundsätzlich Oracle db-links sind "kaputt", für nichts, aber einfache SQL-Typen (vor allem UDT, CLOBS können Probleme haben, XMLType kann wie gut). Wenn man die OID-Lösung arbeitet, dann viel Glück.
Die Lösung, die ich zurückgriff, war die Verwendung eines Java-Gespeicherte Prozedur, anstelle der DB-Link.
Merkmale der Java-Stored Procedure:
Es ist ein bisschen Arbeit, aber wenn man ein bisschen java, sollten Sie in der Lage sein zu "cut und paste" zusammen eine Lösung, von der Oracle-Dokumentation und Beispiel.
Ich hoffe, das hilft.
Es war schon einige Jahre her (wahrscheinlich 8, möglicherweise 9i). Mein spezielles problem war CLOBS oder VARCHAR2(4000) Sprengung. Der java-Pfad können Sie umgeht die Einschränkungen von DBLinks.
8 und 9 sind ein wenig alt. Es funktioniert auf meinem Rechner mit OIDs, machte ich einen link von Oracle 11.1 auf Oracle 10.2 .
oo, Java ist, klingt gut, aber was ist mit der Geschwindigkeit in dieser Lösung?
InformationsquelleAutor Aussie Craig
Sehen diese bestehende Diskussion
verweisen auf oracle-Benutzer definierte Typen über dblink
InformationsquelleAutor Matthew Watson
Eine alternative Interaktion ist eine Datenbank mit Schemata A und B anstelle von zwei Datenbanken mit einer Datenbank verknüpfen.
InformationsquelleAutor tuinstoel
Meine Lösung.
Auf der Seite B ich erstellen temporäre Tabelle, die wie die Sammlung aufnehmen. Am Ein Seite habe ich ein DBMS_SQL wrapper, ruft die Prozedur über dblink. Dieses Verfahren schreibt das Ergebnis der Sammlung in die temporäre Tabelle. Nach dem erfolgreichen Abschluss remote procedure wähle ich Ergebnisse von remote-temporäre Tabelle und wandeln es in die örtlichen Sammel-Typ.
Einschränkungen
1. die Notwendigkeit zur permanenten Objekt-Synchronisation.
2. Unmöglichkeit der Nutzung-A-side-Verfahren (remote procedure call) in der SQL-Abfrage.
3. die Komplexität der Anwendung.
InformationsquelleAutor drnk