2012-03-20 86 views
0

我使用sybase数据库,并试图将某些值更新到数据库中。无法使用JDBC执行存储过程

尝试运行时会抛出异常: com.sybase.jdbc2.jdbc.SybSQLException:以'WeeklyStudentEventClassArchiv'开头的标识符太长。最大长度为30.

此表位于另一个数据库中,因此我必须将数据库名称与表名称一起使用,如下所示: StudActive..WeeklyStudentEventClassArchiv显然超过30个字符。

我必须在存储过程中使用databasename..tablename,但它会抛出异常。

即使我物理地将sql嵌入到java代码中,也会发生这种情况。

这怎么解决。

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 2012-03-20 18:20:52

回答

0

StudActive..WeeklyStudentEventClassArchiv这显然超过30个 字符。

是 - 我算41

重命名表和/或存储过程,你应该罚款。它受到了JDBC驱动程序或数据库的限制。

+0

谢谢你的答复。我不能重命名该表。是否有其他方式。 – 2012-03-20 13:12:10

+0

没有其他的方式,我知道。你可以重命名存储过程,对吗? – duffymo 2012-03-20 13:41:20

+0

重命名存储过程不是问题。但它将如何解决问题。问题出在存储过程权限内使用的表中。 – 2012-03-20 13:45:50

0

您的JDBC驱动程序已过期。更新到更高版本可能有助于解决您的问题。

第一个download来自Sybase网站的最新jConnect驱动程序。然后更新您的代码以使用新的驱动程序包。您还需要更改代码,因为驱动程序的软件包名称随规范的每个新版本而变化。 (当前包为com.sybase.jdbcx ...)

查看programmers reference以获取更多信息。