2012-03-20 3 views
0

J'utilise la base de données sybase et j'essaie de mettre à jour certaines valeurs dans la base de données.Impossible d'exécuter la procédure stockée à l'aide de JDBC

Lors de la tentative d'exécution, une exception est générée: com.sybase.jdbc2.jdbc.SybSQLException: l'identificateur qui commence par 'WeeklyStudentEventClassArchiv' est trop long. La longueur maximale est 30.

Cette table est dans une autre base de données et donc je dois utiliser le nom de la base de données avec le nom de la table comme suit: StudActive..WeeklyStudentEventClassArchiv qui dépasse apparemment 30 caractères.

Je dois utiliser le nom de base de données ... nom de table dans la procudure stockée mais en lançant une exception. Cela se produit même si je mets physiquement le sql dans le code java.

Comment cela peut-il être résolu?

The Stored Procedue is as shown: 
create proc dbo.sp_getStudentList(
@stDate int, 
@endDate int 
) 
as 
begin 
set nocount on 

     select distinct studCode 
     StudActive..WeeklyStudentEventClassArchive  
     where studCode > 0 
     and courseStartDate between @stDate and @endDate 



end 
+0

Pouvez-vous exécuter la procédure stockée directement? – madth3

Répondre

0

StudActive..WeeklyStudentEventClassArchiv qui dépasse apparemment 30 caractères.

Oui - je compte 41.

Renommer la table et/ou de la procédure stockée et vous devriez être bien. Il blesse comme une limitation du pilote JDBC ou de la base de données.

+0

Merci pour la réponse.Je ne peux pas renommer la table .Est-il un autre moyen. –

+0

Pas d'autre moyen que je connaisse. Vous pouvez renommer le proc stocké, non? – duffymo

+0

Renommer la procédure stockée n'est pas un problème.Mais comment va-t-il résoudre le problème.Le problème réside dans la table utilisée à l'intérieur de la procédure stockée droite. –

0

Votre pilote JDBC n'est pas à jour. La mise à jour vers une version ultérieure pourrait aider à résoudre votre problème.

Premier download un pilote jConnect plus récent du site Web Sybase. Ensuite, mettez à jour votre code pour utiliser le nouveau package de pilotes. Vous devrez également modifier votre code, car le nom du package du pilote change pour chaque nouvelle version de la spécification. (Le paquet actuel est com.sybase.jdbcx ...)

Jetez un oeil à la programmers reference pour plus d'informations.

Questions connexes