【问题标题】:Execute sql stored procedure with array input from kettle table input step使用来自kettle表输入步骤的数组输入执行sql存储过程
【发布时间】:2015-03-05 07:00:16
【问题描述】:

我有一个 sql 存储过程,它接受 2 个输入并根据给定的输入返回一个结果集。 我在 sql IN 子句中使用 input1,例如,

WHERE myCol IN(@input1)

从水壶表输入步骤执行存储过程时, 如果我为 input1 提供一个值,它可以正常工作。

EXEC sp_procedureName @input1='07423', @input2='2014-09-02'

如果我像下面这样给出多个值,则结果集为空。

EXEC sp_procedureName @input1='07423,07022,07033', @input2='2014-09-02'

如何将多个值作为参数传递给我的过程。 转换将执行该过程并使用表输出步骤将结果集插入另一个表。

【问题讨论】:

    标签: sql-server stored-procedures pentaho kettle


    【解决方案1】:

    您需要在存储过程中执行的操作是将逗号分隔的数字列表拆分为行中的单个值列表。一旦你有了这个,你可以使用WHERE myCol IN(SELECT v FROM @r),或者使用一个INNER JOIN而不是IN。您可能需要注意的一点是您有前导零 - 如果您想保留这些,您将需要使用字符串而不是整数。

    关于将分隔值拆分为行的主题有很多文章,您可以从here开始。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-14
      • 1970-01-01
      • 1970-01-01
      • 2014-12-28
      • 2019-09-26
      • 2021-02-17
      • 1970-01-01
      相关资源
      最近更新 更多