简体   繁体   English

如何取消德比声明?

[英]How to cancel a statement with derby?

I have a very long sql statement, with java derby database, and I should want provide to the user a "cancel" things. 我有一个很长的sql语句,带有java derby数据库,我应该向用户提供一个“取消”的东西。 But I get : 但我得到:

Caused by: java.sql.SQLException: Feature not implemented: cancel.
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
    at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown Source)

So how can I do something like that with derby ? 那么我怎么能用德比做那样的事呢?

Thanks. 谢谢。


Edit 1 编辑1

There is no next loop in my request ; 我的请求中没有下一个循环; here is my big sql call: 这是我的大sql调用:

"DELETE FROM TABLE "
+ "WHERE "
+ "REF_TICKET IN 
+   "(SELECT NTICKET FROM OTHER_TABLE WHERE "
+   "REF_OPEN IN 
+    (SELECT OPEN FROM AGAIN_ANOTHER_TABLE WHERE "
+    "{fn TIMESTAMPDIFF( SQL_TSI_DAY, TIMECLOSE, CURRENT_DATE)} > 365))");

So it's all in one statement. 所以这一切都在一个声明中。

It's usually not the ExecuteQuery() call that takes very long, but the ResultSet.next() loop that runs for a long time, fetching all the rows. 它通常不是ExecuteQuery()调用需要很长时间,但ResultSet.next()循环运行很长时间,获取所有行。 So just check for the user's cancel request during your row-fetching loop, say, every hundred rows or so. 因此,只需在行获取循环期间检查用户的取消请求,例如每100行左右。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM