2009-12-23 18 views
3

Je me suis cassé la tête contre cela pendant un moment maintenant. J'utilise iBatis avec mon code JAVA pour exécuter Proc enregistré stocké dans Sybase DB.SQL non pris en charge Type 1111 lors de la transmission Chaîne à un champ VARCHAR

La procédure stockée attend certains paramètres. peu d'entre eux sont déclarés VARCHAR (6)

Donc, dans ma cartographie iBatis j'ai fait ce qui suit pour ces paramètres.

<parameter property="searchUserId" jdbcType="String" javaType="java.lang.String" mode="IN"/> 

Cependant, lorsque je fais cela, j'obtiens l'erreur suivante.

--- Check the statement (update procedure failed). 
--- Cause: java.sql.SQLException: JZ006: Caught IOException: java.io.IOException: JZ0SL: Unsupported SQL type 1111. 
Caused by: java.sql.SQLException: JZ006: Caught IOException: java.io.IOException: JZ0SL: Unsupported SQL type 1111. 

Alors j'ai changé la cartographie à suivre:

<parameter property="searchUserId" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/> 

qui est débarrassé de l'erreur ci-dessus, cependant, maintenant le paramètre searchUserId devient valeur de null passé dans la SP. Je sais pour sûr que de mon code java je ne passe pas null.

Est-ce que quelqu'un a été confronté à ce problème? Que devrais-je changer ma cartographie?

Répondre

0

Votre élément de paramètre semble correct, après la modification pour utiliser VARCHAR en tant que jdbcType. Pourriez-vous inclure le reste de l'élément de paramètre et l'élément de procédure du fichier de mappage et le code qui crée la mappe de paramètres et appelle la requête? Cela pourrait être quelque chose de simple comme une faute de frappe lors de la construction de la carte passée dans la requête (du moins c'est le genre d'erreur que je ferais - je sais que je n'ai pas été cohérent avec "userId" en utilisant Ibatis).

+0

J'ai édité la question avec cela ... – Omnipresent

+1

effectivement ... en train de coller le reste de mon code dans la question j'ai réalisé que j'avais un type. searchUserId vs. searchUserID > _ Omnipresent

0

Moi aussi, je faisais face à une situation similaire. Après avoir beaucoup cherché, j'ai finalement trouvé que la réponse à mon problème était qu'il me manquait une "clé" particulière lors de la construction de la carte. Je manquais une déclaration:

map.put("job_name", job.getJobName()); 

& j'utilisais JOB_NAME = # {} job_name dans CronMapper.xml

aussi une autre où j'utilisais JOB_NAME = # {} jobName

1

Je courus dans ce problème pour une raison différente: La table avait une colonne geometry (extension PostGIS) dedans que je suppose que le conducteur n'a pas pu analyser. Laisser tomber cette colonne a fait fonctionner.