Bonjour à tous,
J'ai trouvé de nombreuses infos sur l'exploitation d'XML à partir d'oracle 9i.
Mais mon client est en 8i et n'envisage pas de migration dans l'immédiat.
Il souhaiterait faire des export XML et, si possible des fusions XSL via des procédures stockées.
D'où mes questions :
1- Peut-on installer DBMS_XMLQuery sur Oracle 8i ?
2- Ou, doit-on passer par autre chose ?
Merci à tous pour votre aide précieux
------------------------
Pour être plus précis, j'ai tenté d'installer DBMS_XMLQuery sur Oracle 8i, sans succès...
J'ai donc :
1- Vérifié que l’option Oracle JServer était installée
2- Lancer le script SQL $ORACLE_HOME/rdbms/admin/catxsu.sql
Cela permet d’activer les utilitaires XMLSQL (DBMS_XMLQuery).
3- Lancer manuellement la commande suivante sur l’OS :
$ loadjava -v -r -grant PUBLIC $ORACLE_HOME/xdk/lib/xmlparserv2.jar
4- Charger le XMLParser dans Oracle en exécutant $ORACLE_HOME/xdk/plsql/parser/bin/load.sql
5- Changer les droits d’accès aux utilisateurs aux packages XMLParser et XMLDom :
grant execute on xmldom to public;
grant execute on xmlparser to public;
create public synonym xmldom for sys.xmldom;
create public synonym xmlparser for sys.xmlparser;
J'ai ensuite créée la procédure suivante :
(affiche le contenu du retour XML via dbms_Output)
Et lorsque je lance la requête suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 CREATE OR REPLACE PROCEDURE OutPut_Fichier (fichier IN OUT NOCOPY CLOB) IS ContenuXML VARCHAR2 (32767); Ligne VARCHAR2 (2000); BEGIN ContenuXML := dbms_lob.SUBSTR(fichier, 32767); LOOP EXIT WHEN ContenuXML IS NULL; -- découpe en lignes : Ligne := SUBSTR(ContenuXML, 1, INSTR(ContenuXML, CHR(10)) - 1); dbms_output.put_line (Ligne); ContenuXML := SUBSTR(ContenuXML, INSTR(ContenuXML, CHR(10)) + 1); END LOOP; END; /
J'ai l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SET SERVEROUTPUT ON SIZE 1000000 DECLARE fichier CLOB; BEGIN fichier := dbms_XMLQuery.getXML('SELECT * FROM EMP'); OutPut_Fichier(fichier); END; /
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 * ERREUR à la ligne 1 : ORA-06502: PL/SQL : erreur numérique ou erreur sur une valeur: erreur de conversion des caractères en chiffres ORA-06512: à ligne 7
Partager