2012-03-20 16 views
0

私はsybaseデータベースを使用しており、一部の値をデータベースに更新しようとしています。JDBCを使用してストアド・プロシージャを実行できません

これを実行しようとすると、次のような例外がスローされます。 com.sybase.jdbc2.jdbc.SybSQLException: 'WeeklyStudentEventClassArchiv'で始まる識別子が長すぎます。明らかに30文字を超える StudActive..WeeklyStudentEventClassArchiv:最大長は30

この表は、別のデータベース内にあるので、私は、以下dhownとしてテーブル名と共にデータベース名を使用する必要があります。

私は、格納されたprocudureにdatabasename..tablenameを使用する必要がありますが、例外をスローします。

これは、sqlをjavaコードに物理的に埋め込んだとしても発生します。

これをどのように解決できますか。どうやら30 文字を超える

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

ストアドプロシージャを直接実行できますか? – madth3

答えて

0

StudActive..WeeklyStudentEventClassArchiv。

はい - 私は、テーブルおよび/またはストアドプロシージャの名前を変更する41

を数え、あなたは問題ないはずです。それはJDBCドライバまたはデータベースの制限のように傷つきます。

+0

返信いただきありがとうございます。私はテーブルの名前を変更することはできません。 –

+0

私が知っている他の方法はありません。ストアドプロシージャの名前を変更できますか? – duffymo

+0

ストアドプロシージャの名前を変更することは問題ではありませんが、問題をどのように解決するのでしょうか。問題はストアドプロシージャの内部で使用されるテーブルにあります。 –

0

JDBCドライバが最新ではありません。それ以降のバージョンに更新すると、問題を解決するのに役立ちます。

最初にdownload Sybase Webサイトの最新のjConnectドライバ。次に、新しいドライバパッケージを使用するようにコードを更新します。また、新しいバージョンの仕様ごとにドライバのパッケージ名が変更されるため、コードを変更する必要があります。 (現在のパッケージはcom.sybase.jdbcxです)

詳細については、programmers referenceをご覧ください。

関連する問題