dbi services: Database Infrastructure Services - Engineering, Implementation, Operation, Modernization

Blog - comments
Julien said,
  Unluckily there is a bug on this feature which causes the reversed eff  
youtube html5 player said,
  Wow, very comprehensive review. I'm thinking about learning HTML5. I'm  
youtube html5 player said,
  I have no words for this great post such a awe-some information i got  
SEO Services said,
  Thanks for the nice blog. It was very useful for me. Keep sharing such  
Jhon said,
  Me personally and my friends genuinely favored the post and i believe  
Blog Pierre Boizot Génération de XML : le format des dates

dbi services Blog

Welcome to the dbi services Blog! This blog focuses on database infrastructure and middleware topics. It covers technologies such as Oracle, Microsoft SQL Server, MySQL, Sybase, Linux, or Documentum (etc.). The dbi services blog represents the view of our consultants, not necessarily that of dbi services. Feel free to comment on the postings!

Pierre Boizot

Génération de XML : le format des dates

Aprés une migration de 10gR2 vers 11gR2, une application utilisant les packages DBMS_XMLQUERY pour générer des documents xml est en erreur. Le format des dates a changé, qu'a fait le DBA ?

Un examen des paramètres NLS ne révèle pas de différences entre les deux environnements, au niveau database. La documentation sur le sujet est identique en version 11.2 et 10.2, comme vous pouvez le constater.

S'est posé alors à moi la question suivante : de quoi dépend le résultat ? Y a-t-il une dépendance au NLS_DATE_FORMAT de l'instance ou de la session ?

Pour cela, une fonction de validation fut écrite :

 

create or replace function xmldate return clob as

ctxhdl dbms_xmlquery.ctxtype;
begin
ctxhdl:=dbms_xmlquery.newcontext('select sysdate from dual'); 
return(dbms_xmlquery.getxml(ctxhdl));
end;
/

 

Cette fonction fut testé avec la commande suivante : select xmldate from dual;

On constate rapidement que le xml généré n'est pas dépendant du NLS_DATE_FORMAT.

Test 1 :

alter session set NLS_DATE_FORMAT='DD-MON-RR HH12:MI:SS';
select '11.2.0.1',sysdate , xmldate from dual;
alter session set succeeded.

'11.2.0.1' SYSDATE                   XMLDATE                                       
---------- ------------------------- -----------------------------------------------
11.2.0.1   02-DEC-10 01:13:00                                
                                       
                               
2010-12-02 13:13:00    
                                      

Test 2 :

alter session set NLS_DATE_FORMAT='YYYYMMDD HH24:MI:SS'; select '11.2.0.1',sysdate , xmldate from dual;
alter session set succeeded.
'11.2.0.1' SYSDATE                   XMLDATE                                    
---------- ------------------------- --------------------------------------------
11.2.0.1   20101202 13:13:44                              
                                                                                             
                                                                                     
                                                          2010-12-02 13:13:44
                                                         
                                    
                                                         

Si ce n'est le format de date de la session, serait-ce la version ?

 

Version

Résultat  

10.2.0.4

12/2/2010 13:37

11.1.0.7                                 

12/2/2010 13:44

12.2.0.1

2010-12-02 13:13:00

 

 

 

 

 

 

 

 

 

 

On constate un changement de comportement en version 12.2.0.1. Est-ce un bug ?

Le support Oracle nous a rappelé qu'une fonction existait pour definir le format dont nous avions besoin. :-)

Ajoutez la ligne suivante dans le code de la fonction xmldate et le format sera toujours le même.

dbms_xmlquery.setdateformat(ctxhdl, 'MM/dd/yyyy HH:mm');

Heureusement qu'il y a des bonnes pratiques... :-)

 

Bon XML !

Pierre

About the author

Pierre Boizot
Pierre Boizot
Pierre Boizot est Principal Consultant chez dbi services.

Il bénéficie de 25 ans d’expérience dans le domaine des bases de données. Son parcours du traitement de la donnée à la gestion de son hébergement lui permet aujourd'hui d’avoir une très bonne expérience et compréhension des infrastructures techniques système et bases de données.

En tant que consultant indépendant durant 8 ans, Pierre Boizot a évolué dans divers environnements, acquérant ainsi autonomie et de nouvelles connaissances, et renforçant sa capacité à mettre en œuvre des environnements hautement disponibles et performants.

D’un esprit ouvert, curieux et innovateur, doté d’une grande capacité d’écoute et d’une bonne disponibilité, il met ses compétences au service de ses interlocuteurs pour réaliser et atteindre les objectifs fixés.

Comments

No comments yet. Be the first to submit a comment.
Leave your comment
Guest