【问题标题】:Mule 4 : Database : How to pass a SQL query as a variable in database "Query Text"?Mule 4:数据库:如何在数据库“查询文本”中将 SQL 查询作为变量传递?
【发布时间】:2021-01-28 16:51:48
【问题描述】:

场景:我已经形成了一个 SQL 查询并将其存储在一个变量 vars.query 中 我想在 SQL QUERY TEXT 窗口的 DATABASE SELECT 组件中使用这个变量。

为此,我在查询文本中传递了vars.query,然后运行了应用程序。应用程序已成功部署,但在运行时因 DB 失败:EXCEPTION , expected SQL query but found DDL

我尝试了以下方法:

在查询文本中添加了:query,并在输入参数中引用了

{
    'query' : vars.hierarchyQuery
}

但我收到以下错误:


org.mule.runtime.core.internal.message.ErrorBuilder$ErrorImplementation
{
  description=Query type must be one of [SELECT, STORE_PROCEDURE_CALL] but query '?' is of type 'DDL'
  detailedDescription=Query type must be one of [SELECT, STORE_PROCEDURE_CALL] but query '?' is of type 'DDL'
  errorType=DB:BAD_SQL_SYNTAX
  cause=org.mule.extension.db.api.exception.connection.BadSqlSyntaxException
  errorMessage=-
  childErrors=[]
}

【问题讨论】:

  • 请将 XML 格式的数据库操作(请提供文本)添加到您的问题中,以便我们查看变量的使用情况。

标签: mule4


【解决方案1】:

我通过这样做解决了这个问题:在“查询文本”窗口中,将包含变量的 sql 查询引用为 #[vars.query]

【讨论】:

  • 当与通过变量传递的位置的选择查询时,正面临问题。 Select * from Tablename --> This is working Select * from Tablename where colomn1=columnValue --> 这会引发错误,如下面的“where子句”中的未知列“columnValue”
  • 对于 where 条件,您必须在 Input Parameters 框中声明项目及其值。因此,如果您查询 where 条件声明变量,例如 where column1=:column1 并在查询部分下方的输入框中声明 {"column1" : variable value}
【解决方案2】:

可以通过将$(vars.query)添加到“SQL查询文本”字段来解决

参考:https://docs.mulesoft.com/db-connector/1.10/database-connector-select

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-27
    • 1970-01-01
    • 2011-06-30
    • 1970-01-01
    相关资源
    最近更新 更多