2010-06-24 4 views
0

Nous venons de passer d'Oracle 9i à 10g et une requête de base de données, je travaille avec le client 9i mais pas le 10g. Rien dans la requête n'a changé. Je reçois l'erreur suivante:Java JDBC Oracle 9i mise à niveau vers 10g questions

java.sql.SQLException: ORA-01036: illegal variable name/number 

Pas vraiment sûr de ce qui se passe. Pourquoi ne fonctionnerait-il plus? C'est juste une déclaration select qui rejoint environ 3 ou 4 tables. Je m'assure que je passe la variable en utilisant setInt (c'est un nombre que j'utilise). En comparant les tables jointes, la seule chose que je trouve différente est que sur une table, une colonne que je rejoins est définie comme étant un nombre sur une table et Number (12) sur l'autre. Cela fait-il une différence? La requête fonctionne toujours dans TOAD et SQL Navigator ...

+1

NUMERO vs NUMBER (12) n'est pas le problème; NUMBER (12) définit simplement la précision après le point décimal. Je ne me souviens pas de la précision de NUMBER par défaut. –

+0

Oui, je l'ai deviné, je l'ai juste jeté là parce que ce n'est vraiment pas mon domaine et personne ici n'a la moindre idée de l'endroit où commencer. Merci. – user16208

+1

Voir la fonction pourrait aider. –

Répondre

0

Le problème était avec l'appel de méthode suivante sur la déclaration préparée:

ps.setEscapeProcessing(false); 

Retirées que et maintenant il fonctionne très bien . Ne pensez pas que c'était compatible avec le pilote Oracle 10g. Merci à tous pour l'aide.

0

2 pensées viennent à l'esprit:

  1. assurez-vous que vous utilisez la version correcte du pilote JDBC. Puisque vous avez dit que la requête fonctionne dans TOAD, c'est probablement votre problème.
  2. assurez-vous que vous n'utilisez pas des mots-clés dans votre requête ORACLE comme colonne-alias etc

En outre, l'expérience si votre base de données est grande/bien remplie, vous avez un chemin à faire avant votre environnement 10g est stable. Mes recommandations:

  1. apprendre autant que possible sur les statistiques
  2. Lire les guides de survie (il y a beaucoup sur le net)
  3. montre pour des emplois intégrés que le statut recalcule. Nous avons été martelés 12 jours après la mise en production, car les changements de statistiques ont brisé les performances des requêtes clés. Nos tests n'avaient pas permis un test de stabilité de 12 jours.
  4. être conscient de-variable jeter un oeil bind si vous n'êtes pas déjà