【问题标题】:While loops checking with timeWhile 循环检查时间
【发布时间】:2015-12-15 17:26:09
【问题描述】:

只是想知道你是否可以帮助我解决一个问题。 我被告知要编写一个函数或匿名块,该函数或匿名块将一直运行,直到您将项目放入表中/ 程序应每 5 秒检查一次条目。它应该输出一条消息,通知您进行了检查。一旦找到该条目,它将通知您它找到了该条目,删除该条目然后退出。

我多年来一直在尝试完成此任务,但没有运气。

任何帮助将不胜感激。

谢谢。

您必须使用 while 循环,并且可以通过调用 dbms_lock.sleep(5) 来帮助您控制 5 秒;

【问题讨论】:

  • 到目前为止你得到了什么代码?
  • 造成您困难的部分是什么?检查记录?输出消息?
  • @TonyAndrews 我确实有关于输出的开头和结尾。
  • @DanBracuk 主要检查记录,我想我已经弄清楚了第二部分。

标签: sql loops oracle11g dbms-output


【解决方案1】:

我无权访问 Oracle DB,但这里有一个关于它如何工作的一般概念 (MySQL)

create table tt_mess_around (`id` INT, `name` VARCHAR(50));

delimiter \\
create procedure watcher ()

BEGIN
declare foundInsert INT default 0;
   while foundInsert = 0 do
      select id from tt_mess_around limit 1 into foundInsert;
      if (foundInsert = 0) then
         select 'sleeping for 5 seconds' from dual;
         do sleep(5);
      end if;
   end while;
   delete from tt_mess_around where id = foundInsert;
   select 'just deleted record' from dual;
END
\\
delimiter ;


call watcher;

insert into tt_mess_around 
select 1, 'Arianna' from dual;

【讨论】:

  • 非常感谢,这看起来正是我所需要的!
  • @Arianna.Ellen -- 请记住这是 MySQL,而不是 Oracle -- 语法不会完美匹配...
  • 谢谢 :) 我会修改语法并试一试
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-03
  • 2011-09-09
  • 2019-12-18
  • 1970-01-01
  • 1970-01-01
  • 2015-04-22
  • 1970-01-01
相关资源
最近更新 更多