在定义Oracle计划链时,我需要调用预定程序,我需要能够传递参数。 参数可以在链定义中静态声明(硬编码),但我如何实际调用程序并传递参数?
我查看过网络上的各种文档,但似乎没有办法传递参数,这是正确的吗?
http://docs.oracle.com/cd/B28359_01/server.111/b28310/scheduse009.htm
答案 0 :(得分:2)
我很难记住几年前我是如何解决这个问题的。
我相信我可能使用不同的程序来调用相同的存储过程,具体取决于我想要传入的参数值,这听起来很不方便。这需要对程序的名称进行大量的控制和思考,并且在某些情况下,我开始使用程序类型为PLSQL_BLOCK的程序,因此我可以使用硬编码的参数值来调用所需的存储过程。一个匿名的街区。
仍然不方便,回想起可能效果很好的是使用PLSQL_BLOCK类型的程序来读取参数值表,从中可以在anon块中选择所需的参数值以传递给存储过程。你可以从中构建参数及其值。
同样不方便,但它的优势在于允许链式步骤为后续步骤设置参数,从而允许排序的链间步骤消息传递。
它还允许更改参数而无需重新定义计划对象,我总是发现fraught with peril我总是完全删除链并重新创建它而不是调整它的一部分。
使用高级排队方法可能有一种聪明的方法来完成所有这些,但我还没有涉及到这一点。