1、之前有个同学说他使用kettle执行一坨sql语句时,kettle直接卡死掉了。我给出的建议是使用存储过程,果不其然使用存储过程顺利解决问题。
今天我们一起来学习下kettle如何调用存储过程,这里基于mysql进行演示。调用存储过程有两种方法:使用步骤【调用DB存储过程】或者步骤【执行SQL脚本】。
2、调用DB存储过程-无参存储过程。
1)创建无参数存储过程sp_without_param
use test; drop procedure if exists sp_without_param; delimiter // create procedure sp_without_param() begin -- 打印信息 select 'sp_without_param 我执行了' from dual; end // delimiter ;
2)将步骤【调用DB存储过程】拖到画布上,然后通过写日志打印执行结果,如下图所示:
3)步骤【DB存储过程】设置
步骤名称:自定义步骤名称。
数据库连接:选择定义好的数据库连接。
存储过程名称:填写需要调用的存储过程名称,这里填写sp_without_param。
启用自动提交:设置数据库事物是否自动提交。
返回值名称:函数调用的结果的名称;如果是一个存储过程,留空即可。
返回值类型:函数调用结果的类型;如果是存储过程则不适用。
参数:由于这里是无参数存储过程,无需填写。
3、调用DB存储过程-有参存储过程。
1)创建有参数存储过程sp_with_param,其中param_name 是入参,result是返回结果。
use test; drop procedure if exists sp_with_param; delimiter // create procedure sp_with_param(IN param_name VARCHAR(255) ,OUT result VARCHAR(255)) begin -- 打印信息 select concat('sp_with_param 我执行了',param_name) INTO result from dual; end // delimiter ;
2)步骤【生成纪录】产生入参param_name,步骤【调用DB存储过程】调用sp,步骤【写日志】打印执行结果,如下图所示:
3)步骤【DB存储过程】设置
参数:
名称:参数名称,包含入参数和返回参数。
方向:IN、OUT、INOUT三个选项,根据情况自行选择。
类型:参数类型,和存储过程参数需要相对应。
注意:这里的参数顺序要和存储过程里面的参数顺序保持一致。
4、使用步骤【执行SQL脚本】调用存储过程,这里主要用到mysql中的语法如:call 存储过程名称,本次不做具体介绍,如下图所示:
标签:存储,sp,步骤,kettle,param,调用,第五十七,过程,ETL From: https://www.cnblogs.com/zjBoy/p/18174973