kettle从入门到精通 第五十七课 ETL之kettle调用存储过程

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 存储过程名称,本次不做具体介绍,如下图所示:

 

 

 

posted @ 2024-05-09 13:15  慕容尘轩  阅读(100)  评论(0编辑  收藏  举报