2008-12-08 16 views
2

J'ai porté une application Delphi 6 vers Delphi 2007 et elle utilise BDE pour se connecter à une base de données Oracle 9i. Je reçois unORA-01426: exception de dépassement numérique lors de l'exécution de la procédure stockée

ORA-01426: exception de débordement numérique

Lorsque j'exécute une procédure stockée. Cela se produit de manière aléatoire et si réexécutez la procédure stockée via l'application avec les mêmes paramètres l'exception ne se produit pas.

L'ancienne application Delphi 6 fonctionne très bien.

Des idées pour quelqu'un?

+0

Il n'y a pas assez de détails dans votre question. Pouvez-vous montrer le code source de la procédure stockée? L'erreur provient-elle de l'intérieur de la procédure stockée ou lorsque vous l'appelez? Vous pouvez le dire à partir du numéro de ligne Oracle rapports. –

+0

Le proc stocké est assez complexe et je ne pense pas que cela cause le problème (c'est pourquoi je n'ai pas utilisé la balise Oracle) .Quand j'exécute l'application, il se casse aléatoirement en lançant l'ORA-01426: exception de débordement numérique. Je réexécute l'application ou exécute manuellement le proc stocké, l'erreur ne se produit pas. – user9977

+0

Avez-vous essayé de suivre les appels avec le moniteur SQL sur le côté BDE? Et avez-vous essayé d'activer Oracle trace pour voir ce qui est réellement envoyé à Oracle? –

Répondre

2

Afficher un exemple de code pourrait rendre cela plus facile, mais voici quelques pressentiments:

  1. -ce que les données provenant d'une autre source (comme Excel) qui ne possède pas les types de données explicites? Des données mélangées ou ambiguës peuvent amener le BDE à affecter un type de données erroné à un champ incompatible avec le champ de la base de données.

  2. Cela peut être un problème de formatage numérique (certains composants centrés sur les États-Unis ne gèrent pas la localisation correctement). Votre localisation est-elle autre que l'anglais (États-Unis)? Est-ce le cas, le fait de le changer en anglais (États-Unis) résout-il le problème?

Si ceux-ci manquent complètement, plus de détails pourraient aider.

+0

Le proc stocké est plutôt complexe mais je ne pense pas que cela cause le problème. Les données venant à proc stocké directement à partir de l'application et le type de données est correct. L'application est également en cours d'exécution en utilisant les paramètres régionaux américains. – user9977

0

La version D6 de l'application utilise-t-elle la même version de BDE, Oracle et la base de données? Si c'est le cas, alors il s'agit probablement de données transmises (contenu ou mécanisme).

Ne pas savoir quelles sont ces données, ni comment elles sont transmises, rend le diagnostic assez difficile.

+0

Oui, la version D6 utilise le même BDE, le même client Oracle et la même base de données. J'ai un fort sentiment de son quelque chose lié à BDE. Quelque chose doit avoir changé dans les unités Delphi qui s'interface avec BDE. Malheureusement, nous n'avons pas accès à la source de ces unités. Btw, merci pour les conseils. – user9977

Questions connexes