如何将查询超时参数传递给DB2存储过程

时间:2014-01-30 19:48:31

标签: java sql stored-procedures db2

我有一个界面,用户可以选择存储过程并将参数传递给存储过程。

根据用户选择的内容,查询可以运行很长时间。

如果查询时间超过5分钟,我想停止查询并向用户发送电子邮件,要求他与开发人员联系。

基本上我们如何将超时参数传递给查询?

2 个答案:

答案 0 :(得分:2)

在同一个SQL存储过程中不可能这样做,因为这是一个顺序执行,并且没有任何可能分叉连接或执行并行执行。

您最终可以在Java或C中创建一个外部存储过程,它将创建一个用于监视目的的线程,然后在它花费太多时间时触发作业的最终确定。

此外,您可以在SP中创建一个不定式循环,每分钟激活一次以检查进程,并杀死那些花费超过一定时间的进程,但不建议这样做。

您可以使用内置模块UTL_MAIL发送电子邮件并通过admin_cmd终止流程,但您必须并行创建监控流程,而且无法通过相同的连接

您可以在他的博客中查看Serge Rielau的文章,该文章可以为您提供许多想法:https://www.ibm.com/developerworks/community/blogs/SQLTips4DB2LUW/entry/sleep?lang=en

答案 1 :(得分:0)

查询超时是客户端配置参数,通过db2cli.inidb2dsdriver.cfg或JDBC连接属性设置,具体取决于客户端版本和类型。要在运行存储过程的服务器端强制执行查询运行时限制,您需要使用Workload Manager。

在任何一种情况下,我都认为您无法向客户触发电子邮件通知。