Mulesoft 数据库 Select 使用 In Where 条件查询

Mule Soft Database Select Query with In Where Condition

我试图通过在 select 查询中传递员工 ID 来获取所有员工详细信息。不幸的是,我无法获得员工 ID 的通行证列表。

我在数组中有员工 ID 列表

employee_ids=[100,101,200,2003,400]

在 mule 中,我正在尝试使用流动查询获取所有员工详细信息

<db:select config-ref="mysql_Configuration" doc:name="get Employee details">
            <db:sql>
                select * from employee where employee_id in (:EMP_IDS)
            </db:sql>
            <db:input-parameters>
               #[{'EMP_IDS' : vars.listEmployeeIds}]
            </db:input-parameters>          

        </db:select>

正在抛出错误:

********************************************************************************
Message               : Invalid column type.
Error type            : DB:QUERY_EXECUTION

我也尝试用逗号分隔值传递所有员工 ID

其中

的值
listEmployeeIds =[100,101,200,2003,400] joinBy "," 

结果 = "100,101,200,2003,400"

<db:select config-ref="mysql_Configuration" doc:name="get Employee details">
                <db:sql>
                    select * from employee where employee_id in (:EMP_IDS)
                </db:sql>
                <db:input-parameters>
                   #[{'EMP_IDS' : vars.listEmployeeIds}]
                </db:input-parameters>          

            </db:select>

但它也给我错误 由于它间接地转换为 String 所以它给了我:

Message               : java.sql.SQLSyntaxErrorException: invalid number
.
Error type            : DB:BAD_SQL_SYNTAX

谁能帮我解决这个问题?

它不会那样工作,因为数据库连接器使用 JDBC 来实现查询,并且 JDBC 不支持 IN 子句的参数化。您可以使用以下 MuleSoft 知识库文章 https://help.mulesoft.com/s/article/How-to-use-dynamic-IN-clause-in-your-query-statement-using-Database-Connector

中描述的替代方法