2009-04-15 7 views
0

J'ai un code PLSQL qui appelle une procédure distante afin d'envoyer un XMLType. Ce qu'il fait, cependant, est de diviser le XMLType en plusieurs paramètres varchar2 (4000), ce que la procédure accepte. La procédure à distance est appelée via un DBLink.Pourquoi un XML XMLType ne peut-il pas être envoyé via un DBLink?

Pourquoi le XMLType doit-il être scindé? Cette restriction s'applique-t-elle aux versions de base de données récentes (10g)?

Répondre

1

Oracle ne prend pas en charge l'envoi de types définis par l'utilisateur ou d'objets LOB sur des liaisons de base de données dans la plupart des situations. XMLType peut être stocké en tant que LOB ou UDT, et probablement traité en mémoire de la même manière, il est donc compréhensible que cela ne fonctionne pas.

This question traite du problème général et propose quelques solutions de contournement possibles.

2

Parce que sys.xmltype est un type défini par l'utilisateur.

Probablement, vous obtiendrez PLS-00453 - opérations à distance non autorisées sur les tables d'objets ou définies par l'utilisateur.

C'est probablement la restauration pour toutes les versions de base de données (incluant 10g et 11g).

1

C'est un problème de longue date (et stupide) d'Oracle.

Les fichiers LOB qui dépassent une certaine taille ne sont pas transférés avec succès, vous devez regrouper les gros volumes de données en plus petits morceaux et les recomposer plus tard.

Je n'arrive pas à croire qu'Oracle puisse s'en sortir en ne corrigeant pas cela, je suis au courant du problème depuis Oracle 8, mais des versions plus récentes pourraient avoir corrigé le bogue.