2009-04-15 8 views
0

Ich habe einige PLSQL-Code, der eine Remote-Prozedur aufruft, um einen XMLType zu senden. Was es jedoch tut, ist, den XMLType in mehrere varchar2 (4000) -Parameter aufzuteilen, die die Prozedur annimmt. Die Remote-Prozedur wird über einen DBLink aufgerufen.Warum kann ein Oracle XMLType nicht über einen DBLink gesendet werden?

Warum muss der XMLType aufgeteilt werden? Gilt diese Einschränkung für aktuelle Datenbankversionen (10g)?

Antwort

1

Oracle unterstützt in den meisten Situationen kein Handle zum Senden von benutzerdefinierten Typen oder LOBs über Datenbankverbindungen. XMLType kann entweder als LOB oder UDT gespeichert und wahrscheinlich genauso im Speicher behandelt werden, daher ist es verständlich, dass es nicht funktioniert.

This question behandelt das allgemeine Problem und hat einige mögliche Problemumgehungen.

2

Da sys.xmltype ein benutzerdefinierter Typ ist.

Wahrscheinlich erhalten Sie PLS-00453 - Remote-Operationen für Objekttabellen oder benutzerdefiniert nicht zulässig.

Es ist wahrscheinlich für alle Datenbank-Versionen (10g und 11g).

1

Es ist ein langes (und dummes) Problem von Oracle.

LOBS, die eine bestimmte Größe überschreiten, werden nicht erfolgreich übertragen. Sie müssen große Daten in kleinere Stücke zerlegen und sie später neu zusammenstellen.

Ich kann nicht glauben, dass Oracle damit davonkommen kann, dies nicht zu beheben, ich war mir des Problems seit Oracle 8 bewusst, aber neuere Versionen könnten den Fehler behoben haben.