我要挽救前任员工留给我的Java代码,只剩下源代码本身,我必须自己重新创建数据库结构。到目前为止,我已经完全恢复了它,但是一行总是向我抛出异常,我不明白为什么。

connBeztirazh.execSQLU("declare @ki table (ID_ki int); " +
"declare @bil table (ID_bilet int); " +
"insert into ki (i1,i2,i3,i4,i5,i6) output inserted.ID_ki into @ki values ("+i1+","+i2+","+i3+","+i4+","+i5+","+i6+"); " +
"insert into bilet(ID_ki,data) output inserted.ID_bilet into @bil values ((select ID_ki from @ki),(select SYSDATETIME())); " +
"insert into rezultat (ID_players, ID_bilet) output inserted.ID_bilet values ((select ID_players from players where telnomer='"+number+"'),(select ID_bilet from @bil));", false);


该行抛出以下异常:

com.microsoft.sqlserver.jdbc.SQLServerException: Invalid object name 'ki'.


我对所有内容进行了三重检查,重新创建了表biletplayersrezultat,它们已在代码中的其他位置使用,并且一切正常。据我了解SQL,ki和bil是临时表,由于它们是在同一查询中创建和访问的,因此不会有任何访问/会话问题。

最佳答案

在这种情况下,我实际上忽略了两个表:常量表ki和变量表ki。它们分别由ki@ki引用,这是命名表的一种非常不好的方法。据我所知,在将表ki添加到数据库后,一切都按预期开始工作。

感谢所有对此帖子发表评论的人。

关于java - 临时表的对象名称无效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36779172/

10-11 19:01