"无效的 SQL 语句或 JDBC 转义,终止 '}'没有找到。”与 jTDS 和 Sybase

发布于 2024-08-29 10:09:55 字数 347 浏览 8 评论 0 原文

我正在通过 ibatis 调用存储过程。当使用 jconn2.jar (5.5) 时,它可以工作,而且已经工作了。当我将其替换为 jtds jar (1.2.5) 时,出现异常“无效的 SQL 语句或 JDBC 转义,未找到终止 '}'”。

为了提高透明度,我将 Spring 与 DBCP 结合使用。显然,jTDS 中 SQL 代码的解析不受欢迎,而 jconn2 中则接受了这一点。这个项目早于我们很多人,而且我已经很多年没有使用 Sybase 了。

数据中的外围字符是“-”、“:”和“.”。

我是否需要转义存储过程调用语句中的参数来解决此问题? jconn2 是否有未针对 jTDS 设置的默认设置?

谢谢。

I'm calling a stored procedure via ibatis. It works, and has worked, when using the jconn2.jar (5.5). When I swap it out for the jtds jar (1.2.5) I get an exception "Invalid SQL statement or JDBC escape, terminating '}' not found."

For more transparency I'm using Spring with DBCP. Obviously the parsing of the SQL code in jTDS is not being liked, that is being accepted in jconn2. This project predates a bunch of us, and I haven't used Sybase in years.

The outlying chars in the data are "-", ":" and "."

Do I need to escape my parameters in the stored procedure call statement to get around this issue? Are there default settings for jconn2 that are not set for jTDS?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

岁月流歌 2024-09-05 10:09:55

答案是 jConnect 松散地解释大括号和圆括号的顺序。

因此,{call MyStoredProc(?,?,?}) 对于 jConnect 来说没问题。 jTds 具有严格的解析,因此不匹配的大括号和括号是不正确的。

不好玩。

The answer is jConnect loosely interprets the ordering of braces and parentheses.

So {call MyStoredProc(?,?,?}) is fine for jConnect. jTds has strict parsing, so the mis-matched brace and parenthesis is incorrect.

Not fun.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文