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 存儲過程名稱,本次不做具體介紹,如下圖所示:

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章