这里整理一下有关kettle调用存储过程的问题
刚开机,就看到昨天写的存储过程在kettle的Job定时调用里没有执行成功,很是不理解!就是简单的更新两个表的字段,注意这里我定义了一个输出参数MESSAGE(用于捕获过程中的错误和提示过程运行情况)。
我开始怀疑自己写的过程脚本是不是有不对的地方(虽然编译通过了),使用sqlerrm参数,输出过程错误,果然发现了一个ORA错误。通过修改,保证了过程的正确性。但是还是报错啊!查看之前实际调用的例子,也没发现什么差错的地方!!!可就是报错...
百度了也没有效果,最后自己摆弄,想起来这个跟我之前那个实例不同,这个有参数需要输入,添加参数框的选项,调试了后仍然没有调用成功。
最后在kettle群里发问来着,取了点经,最大的收获是上面这个图中的参数框中的名称字段是实参(这个是我犯迷的地方,其他的流程都走通了,就这点卡了),整理过后就可以正常运行了,思路:在前一步骤中把实参作为别名,在存储过程调用控件中使用(至于怎么调用实参的,上面的图片都白白的了)。正确的流程如图:
这里做个总结:
kettle调用存储过程
1.没有参数的,直接用调用控件即可,配数据库连接,填写过程名称即可。
2.带有参数的,不管是入参还是返回参数,在方法1的前提下,填写参数框各个参数字段,并且在该处理中前一个步骤中提供各个入参。