0

我必须使用动态查询来设置数据库查询的架构/库名称,并且 Anypoint Studio 7.4.1 不断抛出错误,指出它“无法解析参数的值:sql”。

我正在关注这个文档https://docs.mulesoft.com/connectors/db/database-connector-examples#dynamic-queries

当我运行它时它可以正常工作,但是有没有办法让 AnyPoint 停止显示错误?

这是XML

    <flow name="GetLinks" doc:id="c1f17deb-98f2-4261-93ec-cf785e310892" >
        <set-variable value="${db.dataLibrary}" doc:name="Set Library" doc:id="2a5cebbb-3047-4ede-ab0d-7a7257427e7e" variableName="library"/>
        <db:select doc:name="Select EP0001F1" doc:id="ecf2a61f-4e14-4b00-beb1-546d2fa1ba8f" config-ref="Database_Config" fetchSize="100" maxRows="500">
            <db:sql >#[&quot;select * from $(vars.library).EP0001F1 order by EPDRC desc&quot;]</db:sql>
        </db:select>
        <ee:transform doc:name="Transform Message" doc:id="c3b8bcb4-20ef-4b86-a4cd-585e7f57e6d0" >
            <ee:message >
                <ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload map ( payload01 , indexOfPayload01 ) -> {
    loginId: trim(payload01.EPLOGINID),
    individualId: trim(payload01.EPIID),
    officeNumber: payload01.EPOFID,
    controlNumber: payload01.EPICN,
    webControlNumber: payload01.EPWCN,
    lastUpdatedBy: trim(payload01.EPULU)
}]]></ee:set-payload>
            </ee:message>
        </ee:transform>
    </flow>

流程显示错误 流动特性

错误的堆栈跟踪显示

Caused by: org.mule.runtime.core.api.expression.ExpressionRuntimeException: "You called the function '' with these arguments: 
  1: Null (null)
  2: String (".EP0001F1 order by EPDRC desc")

But it expects arguments of these types:
  1: String
  2: String

Trace:
  at main (Unknown)" evaluating expression: ""select * from $(vars.library).EP0001F1 order by EPDRC desc"".
Caused by: org.mule.runtime.api.el.ExpressionExecutionException: You called the function '' with these arguments: 
  1: Null (null)
  2: String (".EP0001F1 order by EPDRC desc")

But it expects arguments of these types:
  1: String
  2: String

Trace:
  at main (Unknown)
4

2 回答 2

1

你几乎是正确的。做了一个小样本并进行了测试。这就是我编写查询的方式,它对我有用。

#["SELECT * FROM $(vars.schema). TEST_TABLE"]

该错误告诉我您的变量为空。只需确保在查询中使用变量之前使用正确的值对其进行初始化。可能是,只需将其放入记录器并确保您的 var. 图书馆里有东西。

用于设置变量、数据库选择、转换消息的 MuleSoft 连接器的流程

注意:我也在我的查询中使用 order by 对其进行了测试,这也有效。我针对 Microsoft SQL Server 对其进行了测试。此外,只有当我的 var 为空时,我才会收到该错误。(我得到了同样的错误)

于 2019-12-12T18:26:00.737 回答
1

我已经联系了支持人员,他们已经复制了这个问题。他们说这是一个 DataSense 错误,因为它在设计时无法引用元数据,即使它在运行时工作。他们还说,它不应该在流程中出现错误。他们已将其作为缺陷提交,因此希望它会尽快得到修补。

于 2019-12-27T16:01:08.387 回答