|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre émérite
![]() Inscription : mai 2004 Messages : 739 ![]() |
Bonjour,
Cela fait pas mal de temps que je planche sur le problème suivant : Dans une procédure stockée située dans un package, je construit une requête dynamique. La construction est de la forme suivante : Code :
vDate est une variable globale de type DATE. Sur un autre environnement j'ai une erreur assez sévère d'Oracle. L'erreur remontée depend de l'environnement appelant (Plus de données sur le socket pour un appel jdbc, fin de fichier sur canal de communication depuis TOAD). Dans le fichier alert.log on a des erreurs de ce type : ORA-07445: exception encountered: core dump [] [] [] [] [] []. Si je remplace le to_date(...) par un bête sysdate cela fonctionne. Si je remplace vDate par une variable locale cela plante aussi. Si j'extrait la procédure dans un fichier sql, que j'initialise mes variables globales en début de procédure et que je lance ce fichier sql, cela fonctionne. Bref je ne comprend plus grand chose. J'ai essaye de changer mes parametres NLS_DATE_FORMAT & co chez moi pour tenter de reproduire mais sans succès. Merci d'avance pour vos idées.
__________________
Je ne réponds pas aux questions techniques par MP, le forum est là pour cela. La crypto c'est comme les flambys, une fois que tu as trouvé la languette tu as juste à tirer pour tout faire tomber. (\ _ /) (='.'=) Voici Lapinou. Aidez le à conquérir le monde (")-(") en le reproduisant |
||
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 459 ![]() |
En fait c'est la solution la moins sujette aux divers problèmes de formattage de date, vu que tu reconstruit la date à partir d'une chaine de caractère.
Donc je ne vois pas pourquoi ça planterait. Essayes d'utiliser des bind variables pour tester
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
00
|
|
|
#3 |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 534 ![]() |
Sinon mettre en phase le format date dès le début du traitement avec
Code :
execute immediate 'alter session set nls_data_format=''DD/MM/YYYY''';
__________________
Rédacteur Oracle (Oracle ACE) Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche Je ne réponds pas aux questions techniques par MP Blogs: Forms-PL/SQL-J2EE - Forms Java Beans |
|
|
00
|
|
|
#4 | |
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 320 ![]() |
Citation:
Il pourrair s'en passer plutôt en utilisant des variables de liaison (binding variables) (suggèré déjà par MCM) Sinon pour l'anomalie il faut chercher peut être sur Metalink, Ora-07445 |
|
|
|
00
|
|
|
#5 | ||
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 534 ![]() |
Code :
__________________
Rédacteur Oracle (Oracle ACE) Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche Je ne réponds pas aux questions techniques par MP Blogs: Forms-PL/SQL-J2EE - Forms Java Beans |
||
|
|
00
|
|
|
#6 |
|
Membre émérite
![]() Inscription : mai 2004 Messages : 739 ![]() |
La solution avec les bind variables fonctionne.
Mais je ne comprend toujours pas pourquoi ma solution ne fonctionnait pas dans cet environnement particulier. Je n'ai pas testé la solution de SheikYerbouti car d'une part j'avais la même question que mnitu et d'autre part, les tests étant effectués par le client maintenant qu'une solution est trouvée, je ne peux décemment leur demander d'effectuer d'autres tests (vu le nombre déjà effectué...) Merci à tous. Je ne met pas le tag Résolu car j'aimerai bien une explication ou du moins une piste d'explication, je n'aime pas avoir une solution sans comprendre l'origine initiale du problème.
__________________
Je ne réponds pas aux questions techniques par MP, le forum est là pour cela. La crypto c'est comme les flambys, une fois que tu as trouvé la languette tu as juste à tirer pour tout faire tomber. (\ _ /) (='.'=) Voici Lapinou. Aidez le à conquérir le monde (")-(") en le reproduisant |
|
|
00
|
|
|
#7 | |||
|
Expert Confirmé Sénior
![]() ![]() Marius NituIngénieur développement logiciels Inscription : octobre 2007 Messages : 3 320 ![]() |
Pour @SheikYerbouti
Citation:
Code :
Connais tu la valeur de la variable globale vDate avant d'éxécuter le code qui se plante ? |
|||
|
|
00
|
|
|
#8 |
|
Membre émérite
![]() Inscription : mai 2004 Messages : 739 ![]() |
Oui je l'ai vérifié.
Et j'ai même remplacé cette dernière par une variable locale déclarée juste avant la requête sans succès. Par contre la même chose hors du package fonctionne (dans un fichier sql lancé depuis SQL+). Et la seule différence de paramètres de session est le NLS_DATE_FORMAT qui est à DD-MM-RR dans un cas et DD-MM-YY dans l'autre. Mais j'ai changé ce dernier dans mon environnement sans reproduire l'erreur (je n'ai pas pu tester dans l'autre sens, voir si l'erreur disparaissait chez le client).
__________________
Je ne réponds pas aux questions techniques par MP, le forum est là pour cela. La crypto c'est comme les flambys, une fois que tu as trouvé la languette tu as juste à tirer pour tout faire tomber. (\ _ /) (='.'=) Voici Lapinou. Aidez le à conquérir le monde (")-(") en le reproduisant |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com