kettle從入門到精通 第五十七課 ETL之kettle呼叫儲存過程

慕容尘轩發表於2024-05-09

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

相關文章