kettle select value值 传参

1) 向Execute SQL Script传递参数


步骤-1:从数据源头获取一行数据
步骤 0:Select Values (针对一行进行有选择地取出某些字段,比如取出5个字段,每个字段作为变量参数,传递给下一步的SQL)
步骤 1:Execute SQL Script(进一步选取上一步输出的某几个字段值,比如从上面5个字段里面再筛选出4个,作为执行SQL的参数)
这4个字段是:aid,bid,date,amount,其中id是string,date是datetime,amount是decimal

那么在步骤 1中的SQL脚本中使用如下:


declare @id bigint
declare @session_id bigint
declare @visitor_id bigint

set @id=?
set @session_id=?
set @visitor_id=?

其中@amount的?是不需要引号的。因为kettle实际上用的是全局替换( 这一点很重要,我被迷惑了很久),如同C/C++中的const常量,编译后全部替换成指定的值。
否则如果amount的值是20, 如果加了引号,就变成了set @amount = '20',这和decimal的类型冲突。会出错。而id和date类型的变量就可以赋值为字符类型。

选项要点:
Execute for each row
要选中。很好理解,对每一行输入都要执行该SQL语句
Execute as a single statement:
要选中。否则你在里面写的大段大段的SQL就被一行一行地执行,会大面积出错。
Variable Substituation:
要选中。这里牵涉到传进来的多个参数的赋值顺序问题。上面的aid先赋值,那系统怎么知道第一个问号是上一步传进来的哪个参数呢?就要由这一步来决定顺序。要在左下方的表格里指定好传进来的参数列表和顺序





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值