9
votes

Comment puis-je corriger cette erreur: SQL92 non pris en charge?

i Wirt code en Java et connexion de base de données avec Oracle. J'exécute un script et obtenez cette erreur.my Script fonctionne dans le crapaud mais ne fonctionne pas dans mon projet

URL include . xxx

. xxx

Cette erreur se produit à cause de {} parenthèses. Je le teste. Quand je supprime des parenthèses n'étant pas une erreur. Mais j'en ai besoin et comment puis-je résoudre ce problème?


5 commentaires

Montrez votre requête. Votre requête semble être incorrecte.


ma requête fonctionne dans le crapaud mais pas courir dans mes NetBeans


Si vous voulez obtenir de l'aide, considérez deux choses. 1) URL inclut "{2}" : il ne suffit pas de poster ceci comme message d'erreur. Message d'erreur entier. 2) Vous devriez également afficher la valeur de la variable URL avant d'appeler stmt.executequery (URL) .


@Ersin, personne ne sera capable d'aider en fonction du fait que cela fonctionne dans le crapaud. Postez la chaîne de relevé.


Remplacez {} ceci avec () et essayez-le.


5 Réponses :


0
votes

Il semble que plusieurs des appels de remplacement ne disposent pas de suffisamment d'arguments. Compter à gauche, le premier remplacement a deux arguments. La seconde n'a qu'un argument. Le troisième a deux arguments. Le quatrième n'a qu'un argument. Le cinquième (dernier) a deux arguments. Dans Oracle the Remplacer la fonction nécessite au moins deux arguments. Je ne suis pas en mesure de déterminer s'il s'agit de la cause de l'erreur car vous n'avez pas affecté une déclaration complète, mais je m'attendais certainement à ce que le manque d'arguments appropriés soit remplacé comme un problème.

Partager et profiter.


0 commentaires

16
votes

C'est tout sur { et } . Vous ne les utilisez pas. JOJDBC ne l'analysera pas. Utilisez des jetons différents au lieu d'eux.


2 commentaires

Quel jeton dois-je utiliser? Je viens de rencontrer le même problème lorsque j'appelle une procédure avec JDBC


Vous pouvez utiliser tout ce que vous voulez. F.e. UTILISEZ XX , remplacez-le d'abord, puis remplacez-le à l'inverse.



3
votes

Ceci est probablement dû à la syntaxe d'évacuation JDBC (voir section 13.4 de la spécification JDBC 4.1). Un pilote JDBC doit gérer des échappées entre { et } et traduire la fonction standard évasée, une jointure externe etc. au format spécifique à la base de données.

Autant que je sache, un conducteur ne devrait analyser que les évasions si elles se produisent dans le corps de la déclaration elle-même, et non quand il est dans le texte dans la déclaration (comme dans votre exemple). Donc, pour moi, cela ressemble à un bogue dans le traitement de votre pilote de JDBC.


0 commentaires

1
votes

Vous pourrez peut-être vous en contenter en suivant la réponse d'un autre poste Stackoverflow: Créer Java sur la base de données Oracle avec JDBC

Un résumé est: P>

CallableStatement stat = conn.prepareCall(sql);
stat.setEscapeProcessing(false);
stat.execute();


0 commentaires

0
votes

remplacer '{4}' avec chr (123) || '4' || chr (125) dans votre script.


0 commentaires