过程中的PL/SQL游标问题

Posted

技术标签:

【中文标题】过程中的PL/SQL游标问题【英文标题】:PL/SQL cursor problem in procedure 【发布时间】:2011-02-23 10:29:56 【问题描述】:

我有存储过程。在过程中有三个游标。我必须在生产中每天运行过程。我只希望每天运行两个游标,剩下的游标应该只在每个月的第一天运行。那么有什么变化应该对第三个光标进行。请提供解决方案。

【问题讨论】:

【参考方案1】:

游标本身并没有真正运行。使用光标的是您的代码。因此,如果是当月的第一天,您可以签入代码:

-- Check if today is first day of the month
if trunc(sysdate, 'MM') = trunc(sysdate) then
  -- Use cursor here
end if;

可能更好的解决方案是创建两个单独的程序并为每个程序创建工作。您可以指定作业的时间间隔,这样一个每天运行,另一个每月运行。

【讨论】:

【参考方案2】:

查看dbms_scheduler

【讨论】:

这个答案太粗鲁了,没有帮助。 它直接将他指向Oracle文档,而这里需要dbms_scheduler(或一些调度软件)。简单明了。 他不想安排程序,他想根据运行日期有条件地使用其中一个游标。 @tony,我理解,但是当我看到“两个游标应该每天运行......游标应该只在每个月的第一天运行”时,它会尖叫调度程序,尤其是在产品代码中。这种时序逻辑将增长并变得更加复杂几乎是不可避免的。 IT 无法管理 pl/sql 内部的更改,但他们可以管理计划。我想如果我没有时间进行全面的解释,我会保持我的陷阱关闭;)

以上是关于过程中的PL/SQL游标问题的主要内容,如果未能解决你的问题,请参考以下文章

过程中的 PL/SQL 游标不起作用

PL/SQL 打印出存储过程返回的引用游标

如何将游标添加到 PL/SQL 块中的过程中?

将修改后的表中的游标用于相同的 PL/SQL 过程

PL/SQL 过程、游标、PLS- 00103 错误

如何在 Oracle PL/SQL 过程的开始部分之后声明游标