[PL/SQL - Oracle 9i] CLOB et owa_pattern
Bonjour,
Voilà ce que je souhaite faire :
je veux traiter des chaînes de caractères de type CLOB puis les afficher dans une page web. Pour cela, le moyen le plus simple selon moi est d'utiliser des expressions réugulières.
Ne disposant pas de la base Oracle 10G je me suis rabattu sur le package owa_pattern. Mais voilà, sur un CLOB, ce package ne me renvoi pas ce que je souhaite. Je m'explique :
Code:
1 2 3 4 5 6 7
|
DECLARE
strData CLOB := 'bonjour tout le monde' ;
BEGIN
owa_pattern.change( strData, 'tout le monde', 'à tous');
htp.p( strData ) ;
END; |
Tentez ce code dans une procédure, et vous verrez que le résultat affiché est une chaîne incompréhensible avec des caractères japonais.
Comment expliquez vous ça, auriez vous une solution car j'ai vraiment besoin de ces expressions et je ne vois pas comment je pourrais faire.
Merci
Re: [PL/SQL - Oracle 9i] CLOB et owa_pattern
Citation:
Envoyé par rebolon
Tentez ce code dans une procédure, et vous verrez que le résultat affiché est une chaîne incompréhensible avec des caractères japonais.
Chez moi, ça marche ! :oops:
Oups, j'avais pas vu ton dernier reply...
Bon, alors j'ai arreté de bosser sur ce problème depuis la dernière fois.
Mais je viens de faire un test de performance sur le package owa_pattern (parce que j'avais des doutes sur la rapidité du package) :
soit le procédure suivante
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
PROCEDURE testOwa_pattern (
p_contentValue IN VARCHAR2 DEFAULT NULL
)
IS
strTest nclob := #DATA# ;
begin
htp.p( length( strTest ) ) ;
owa_pattern.change( strTest, 'c', #TOREPLACE#) ;
htp.p( length( strTest ) ) ;
end testOwa_pattern ;
end pkg_test ; |
Dans #DATA# vous mettez environ 16000 caractères
Dans #TOREPLACE# vous mettez environ 3000 caractères
faites un test en appelant la procédure depuis votre navigateur préféré et ....
après une longue attente ( > 15 secondes ) vous aurez droit à l'affichage.
Il est donc assez ahurissant de voir que pour faire un traitement des plus simples on attende aussi longtemps.
Imaginez maintenant si vous devez en plus faire des tests et autres traitement requiérant des expressions régulières. Et bien mieux vaut ne pas avoir à traiter de grosse chaine sinon c'est la misère.
Bien sûr, si vous avez des solutions, je suis preneur (est ce que 10g est vraiment plus rapide sur ce point ?)