Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Débuter
Débuter Forum d'entraide pour débuter avec Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/06/2008, 11h34   #1
Membre du Club
 
Homme
Ingénieur développement logiciels
Inscription : mars 2008
Messages : 140
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : mars 2008
Messages : 140
Points : 43
Points : 43
Par défaut Code erreur ORACLE en hexadecimal

Bonjour,
J'ai des codes FORTRAN où je manipule instructions SQL.
Pour gérer les erreurs, je m'appuis sur les codes erreurs que ORACLE peut fournir :
Une erreur de type
ORA_(NumeroErreur)
Le seul hic c'est que le code traite des erreurs en hexadecimal (et/ou eventuellement en decimal) alors que les erreurs fournit par les doc ORACLES sont des noms logiques "ORA_(NumeroErreur)". Quelque part je suppose qu'une table de correspondance doit être mise dans le code entre le noms logique et la correspondance en code hexadecimal et/ou decimal mais je ne sais pas retrouver ces informatiions chez ORACLE (peut être cela dépends du langage de programmation)

Si quelqu'un pourrait m'orienter sur ce sujet ce serait sympa
VITALTH est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2008, 08h56   #2
Membre Expert
 
Avatar de scheu
 
Inscription : juin 2007
Messages : 1 497
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 1 497
Points : 1 485
Points : 1 485
Ben tu n'as qu'à développer une fonction qui convertit les nombres décimaux en nombres hexadécimaux, que dire de plus ...
__________________
La théorie, c'est quand on sait tout mais que rien ne fonctionne.
La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/
scheu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2008, 08h16   #3
Membre du Club
 
Homme
Ingénieur développement logiciels
Inscription : mars 2008
Messages : 140
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : mars 2008
Messages : 140
Points : 43
Points : 43
Par défaut Reformulation

Je n'ai peut être pas été clair je m'en excuse.
Le problème c'est que ORACLE fournit des erreurs sous la forme "ORA_(NumeroErreur) avec NumeroErreur un nombre décimal.
ORA_(NumeroErreur) est donc une variable ou un nom logique.
Or les programmes (FORTRAN ou les autres programmes utilisent des codes erreurs en hexadecimal ou en decimal).
Donc je voulais savoir s'il existe une table de correspondance ou un fichier include qui donne les erreurs sous la forme ORA_(NumeroErreur) en nombre decimal ou hexadecimal.
Par exemple si dans le programme FORTRAN on a :
Code :
1
2
3
IF (SQLCODE.EQ.ORA_01400) THEN
(Instruction) 
ENDIF
Je voudrais trouver la correspondance avec :
Code :
1
2
3
IF (SQLCODE.EQ.(NumeroDecimalouHexadecimal)) THEN
(Instruction) 
ENDIF
Je voudrais avoir ORA_O1400= (NumeroDecimalouHexadecimal)
Parce que je ne suis pas suir que le numero derriere ORA (dans l'exemple 01400 correspond au code erreur en decimal dans le programme FORTRAN ou dans un autre langage)
VITALTH est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2008, 09h01   #4
Membre Expert
 
Avatar de scheu
 
Inscription : juin 2007
Messages : 1 497
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 1 497
Points : 1 485
Points : 1 485
Je ne pense pas qu'il y ait une correspondance
__________________
La théorie, c'est quand on sait tout mais que rien ne fonctionne.
La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/
scheu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2008, 09h43   #5
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Mais c'est pas une question FORTRAN ça par hasard ?
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2008, 11h40   #6
Membre du Club
 
Homme
Ingénieur développement logiciels
Inscription : mars 2008
Messages : 140
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : mars 2008
Messages : 140
Points : 43
Points : 43
J'ai posé la question sur les deux forums car je ne savais pas bien ou le situait : c'est plus un problème d'interface entre le FORTRAN et ORACLE.
Ce que je ne comprends pas mais peut être vous ne pourrez pas m'aider c'est qu'en marquant une commande de type :
Code :
1
2
3
IF SQLCODE.EQ.ORA_01400
Instruction
ENDIF
Après précompilation il génère un fichier FORTRAN dans lequel l'instruction ci dessus n'a pas été modifiée et la compilation ... fonctionne. Je me demande alors : mais ou va t il checher le symbole ORA_01400 puisqu'à priori dans mon source FORTRAN il n'y a aucun fichier include qui fait la correspondance entre ORA_01400 et un nombre en décimale
VITALTH est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2008, 11h25   #7
Membre éprouvé
 
Avatar de miloux32
 
Inscription : juillet 2003
Messages : 538
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 538
Points : 473
Points : 473
Citation:
Envoyé par VITALTH Voir le message
J'ai posé la question sur les deux forums car je ne savais pas bien ou le situait : c'est plus un problème d'interface entre le FORTRAN et ORACLE.
Ce que je ne comprends pas mais peut être vous ne pourrez pas m'aider c'est qu'en marquant une commande de type :
Code :
1
2
3
IF SQLCODE.EQ.ORA_01400
Instruction
ENDIF
Après précompilation il génère un fichier FORTRAN dans lequel l'instruction ci dessus n'a pas été modifiée et la compilation ... fonctionne. Je me demande alors : mais ou va t il checher le symbole ORA_01400 puisqu'à priori dans mon source FORTRAN il n'y a aucun fichier include qui fait la correspondance entre ORA_01400 et un nombre en décimale
Fortran ne genere pas les variables implicites ??? ( dans mes souvenirs si ....)
__________________
C'est pas parce que ca marche que c'est bon!!
Pensez au bouton "Résolu"
Je ne réponds pas en privé aux questions
miloux32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2008, 13h24   #8
Membre du Club
 
Homme
Ingénieur développement logiciels
Inscription : mars 2008
Messages : 140
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : mars 2008
Messages : 140
Points : 43
Points : 43
Justement oui mais des codes erreurs décimales.
Dès qu'il s'agit des codes logiques, les éditeurs de logiciels fournissernt des fichiers de paramètres sous la forme de fichiers includes
Par exemple pour le fortran ou aurait des fichiers INCLUDE du genre

Code :
PARAMETER Nom_Logique = '000000001'X
Et les sources appellent ces fichiers INCLUDE.
Par exemple en fortran, on aurait, si le fichier include s'appelle TABLE_CORRESPONDANCE :
Code :
1
2
3
4
5
6
7
8
 
      PROGRAM P1
 
      INCLUDE 'TABLE_CORRESPONDANCE'
 
      IF (CODE_ERREUR.EQ.Nom_logique) THEN
       (Instruction)
      ENDIF
Mais là avec ORACLE et bien que j'ai cherché partout il faut marqué des instructions du genre

Code :
1
2
3
4
5
6
     PROGRAM P1
 
 
      IF (CODE_ERREUR.EQ.ORA_XXXX) THEN
       (Instruction)
      ENDIF
Or ces ORA_XXXX sont des noms logiques et non des codes décimales ou hexadécimales et il n'existe pas de fichiers INCLUDES correspondant.
Qui plus est après PRECOMPILATION, dans le fichier FORTRAN généré, le code erreur n'est pas traduit en décimal ou hexadécimal
VITALTH est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2008, 14h30   #9
Membre éprouvé
 
Avatar de miloux32
 
Inscription : juillet 2003
Messages : 538
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 538
Points : 473
Points : 473
et en virant le "ORA_" devant ? ( une petite sous-chaine quoi ...)
__________________
C'est pas parce que ca marche que c'est bon!!
Pensez au bouton "Résolu"
Je ne réponds pas en privé aux questions
miloux32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2008, 08h22   #10
Membre du Club
 
Homme
Ingénieur développement logiciels
Inscription : mars 2008
Messages : 140
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : mars 2008
Messages : 140
Points : 43
Points : 43
Par défaut Peut être!!!!!

C'est ce que je pense mais même comme ça il s'agit d'une règle intelligente : il faut que le fortran vire le ORA devant. Il doit donc avoir quelque chose qui lui dit. Quand le programme est précompilé les codes erreurs restent avec le ORA devant. Donc il faut bien qu'il y ait une table de paramétrage et c'est cette table qu'il me manque.
VITALTH est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h51.


 
 
 
 
Partenaires

Hébergement Web