使用kettle调用存储过程,传入参数传出参数。

存储过程的内容如下,主要是传入一个表名字和一个数字类型的返回值。

那么能得到表的行数。

CreateOr Replace Procedure p_Emp_Cnt(t In Varchar2, Num Out Number) Is
  v_Sql Varchar2(600);
  Lv_Cnt Number;
Begin
  Select Count(*)
    Into Lv_Cnt
    From User_Tables
   Where Upper(Table_Name) = Upper(t);
 
  If Lv_Cnt > 0 Then
    v_Sql := 'Select Count(*) From ' || t;
    Execute Immediate v_Sql
      Into Num;
  End If;
End;


调用过程如下:

Declare
  Num Number;
Begin
  p_emp_cnt('t1',Num);
  dbms_output.put_line(Num);
End;
/


实验过程中包括两个步骤:

wKiom1cZ_xWSZ-qmAAALfD-Q-Yg833.png


1、自定义常量数据:

这个步骤定义了两个列,一个列是表名,另外一个列是空值(用来接收返回值)

如下图所示:

wKiom1cZ_2-gnAsyAAAQdIDTpOc116.png


2、调用DB存储过程

这个步骤需要连接到目标数据库,并且需要通过前面的步骤得到参数名称。

调用过程之后得到返回值。


wKioL1caAE-AiQG5AAA2kxhmH7A161.png


3、预览数据

如下图所示,得到每个表中到底有多少行。


wKiom1cZ_4yCeq6bAAAXMUV9WaY794.png

调用存储过程的步骤总结,你只需要写传入的表名就可以了。比如说我的生成常量记录中只有一列。

那么只需要把这列内容传入到过程中即可。



wKioL1caAFCSjF9BAAAdaiQ0yAA914.png


预览数据得到结果:


wKiom1cZ_42A2d8wAAAXMeagOPM599.png