如何在表输入中传递参数?

Sud*_*sht 1 pentaho kettle pdi

我有一份工作,其中有两个转换.

  1. 转换获取传递给另一个转换的数据列表.这里它执行第一次转换的每一行传递.

  2. 在我用过的第二次转换中

    "从结果中获取行" - >"表输入"

在"从结果中获取行"中有五个字段但在表输入中我只需要使用第2个位置和第3个位置字段.

即使我试图给单个参数"?" 它给出错误

"2017/06/29 15:11:02 - 从table.0获取数据 - 在准备好的声明上设置值#3 [String]错误2017/06/29 15:11:02 - 从table.0获取数据 - 参数索引超出范围(3>参数数量,即2)."

我的查询非常简单select*from table where col1 =?和col2 =?

我怎样才能做到这一点?错误?我做错了吗?

Ala*_*inD 5

您还可以为参数指定名称,以便查询成为

select * from table where col1="${param2}" and col2="${param3}".

不要忘记选中"在脚本中替换变量"复选框,并使引号适应您的sql方言(例如:'${param1}'对于SQL-Server).

注意,param2并且param3必须存在于转换的设置/参数中,没有${...}装饰和不破坏SQL的值.

可以在先前的变换中使用Set variables步骤(变量和参数在第一近似中是同义的)和至少范围来设置或改变参数的值Valid in the parent job.

当然,如果您为了遗留目的或任何其他原因坚持使用未命名的参数,您有责任告诉PDI第一个被丢弃的参数(例如where (? is null or 0=0) and col1=? and col2=?,