Oracle 8i 1.7 (exports XML)
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)
Code:
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;
/ |
Et lorsque je lance la requête suivante :
Code:
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;
/ |
J'ai l'erreur :
Code:
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 |