2

在定义 Oracle 计划链时,我需要调用计划程序并且需要能够传递参数。参数可以在链定义中静态(硬编码)声明,但我如何实际调用程序并传递参数?

我查看了网络上的各种文档,但似乎没有办法传递参数,这是正确的吗?

http://docs.oracle.com/cd/B28359_01/server.111/b28310/scheduse009.htm

4

1 回答 1

2

我很难记住几年前我是如何解决这个问题的。

我相信我可能使用不同的程序来调用相同的存储过程,具体取决于我想要传递的参数值,这听起来很不方便。这需要对程序的名称进行大量控制和思考,在某些情况下,这显然是不够的,以至于我开始使用程序类型为 PLSQL_BLOCK 的程序,因此我可以调用所需的存储过程,并将参数值硬编码到一个匿名块。

仍然不方便,并且回想起来可能工作得很好的是使用 PLSQL_BLOCK 类型的程序,该程序读取参数值表,可以在 anon 块中从中选择所需的值,以将其传递到存储过程中。您可以从中构建参数及其值。

也不方便,但它具有允许链间步骤消息传递的优点,方法是允许链步骤设置后续步骤的参数。

它还允许更改参数而无需重新定义计划对象,我总是发现它充满了危险,以至于我总是完全放弃并重新创建它,而不是调整它的单个部分。

使用先进的排队方法可能有一种聪明的方法来完成所有这些,但我没有涉足。

于 2013-07-05T15:05:31.150 回答