syntax - db2 存储过程的休眠时间语法
问题描述
对于 oracle,我们可以使用以下语法进行睡眠
DBMS_LOCK.SLEEP(sleepTime);
对于mysql,我们可以使用以下语法进行睡眠
DO SLEEP(sleepTime);
对于 db2 我怎么能做到这一点?以下是我的脚本的一部分。
REPEAT
IF rowCount > 0
THEN
做睡眠(睡眠时间);
END IF;
DELETE FROM IDN_OAUTH2_ACCESS_TOKEN WHERE TOKEN_STATE IN ('EXPIRED','INACTIVE','REVOKED') OR (TOKEN_STATE='ACTIVE');
GET DIAGNOSTICS rowCount = ROW_COUNT;
UNTIL rowCount=0 END REPEAT;
我们如何使用 db2 睡觉?如果有任何帮助,我们将不胜感激
解决方案
目前,IBM 没有为 Db2-for-LUW 提供 DBMS_LOCK 模块,尽管将来可能会发生变化,或者如果您有技能,您可以实现自己的。
但是,如果您使用的是 Linux/Unix/Windows 的最新 Db2 版本,那么您可以滥用DBMS_ALERT.WAITONE过程。这不是完全匹配,但可能已经足够好了。这个想法是等待一个永远不会被触发的警报(信号)的指定时间(即,除非您想中断等待,否则您必须确保代码不会发出指定的警报信号)。
例如,下面的块将等待 5 分钟:
--#SET TERMINATOR@
BEGIN
DECLARE v_outmessage VARCHAR(32672);
DECLARE v_outstatus integer default 0;
DECLARE v_seconds INTEGER default 300;
CALL dbms_alert.waitone('whatever',v_outmessage ,v_outstatus,v_seconds);
END@
还可以选择实现睡眠功能(作为外部 UDF 或外部存储过程),这在此处进行了描述(需要 C 编译器等)。
推荐阅读
- javascript - 如何在javascript中将formData对象转换为二进制?
- anypoint-studio - Cloudhub 连接器的凭据无效错误
- javascript - 组件无法监听 react-router
- python - Celery '错误:没有节点在时间限制内回复'错误 - 如何调试?
- java - hibernate.cfg.xml 仅在使用已弃用的 buildSessionFactory() 时才被读取,而不是与 StandardServiceRegistryBuilder 一起使用
- javascript - 带有 Firebase 实时数据库和 VueFire 的 Vue.js 应用程序突然停止工作
- python - 断点和单步执行 Pandas/Python 中的代码
- php - 如何通过 DOMDocument 获取父元素和嵌套元素?
- serialization - 我可以在 Scio 中设置/取消设置默认编码器吗?
- python - 'NoneType' 对象在项目中没有属性“用户名”,该项目已经运行了一段时间