【问题标题】:WMB ESQL passing constants to passthruWMB ESQL 将常量传递给 passthru
【发布时间】:2017-07-25 12:18:41
【问题描述】:

我正在研究 IBM Websphere Message Broker v6.0 并在 ESQL 中编写消息流。我正在使用 passthru 在数据库上触发选择查询。

现在的问题是 passthru 使用 ' 来开始和结束它的参数字符串。我们在 SQL 中使用 ' 来表示常量——比如 WHERE T1.col1 = 'Y'。因此,当我在 passthru 参数中使用 ' 时,它会将其视为字符串的结尾。

这里是 ESQL 代码:

SET result1 = passthru ('select CASE WHEN T2.X_FLG = 'Y' AND (SELECT D2.RGN FROM V1.X AS D2
WHERE D2.DLR = V.DLR AND (D2.RGN = '500' OR D2.RGN = '600')) FROM V1
<left join all the tabels>');

现在的问题是 passthru 参数字符串以第一个 ' 结尾,就在 Y 之前 - 数据库选择查询的参数。 ESQL 编译器给我编译器错误,说它是一个语法错误。

是否有一些字符要附加在 ' 之前,以便将其识别为字符 ' 而不是作为字符串的结尾来传递?像 \' 或 /' 之类的东西?我已经尝试了所有这些,但似乎没有任何效果。

【问题讨论】:

    标签: ibm-integration-bus extended-sql


    【解决方案1】:

    想通了!还有另一个子句(我应该说)允许我们将常量值传递给 SQL 语句,它是在 SQL 查询的 ' 完成后编写的。我们需要常量值的地方应该有?它标记了插入的位置。插入按照我们在“values”标签中放置常量值的顺序进行。所以,上面的 passthru 查询可以写成:

    SET result1 = passthru ('select CASE WHEN T2.X_FLG = ? AND (SELECT D2.RGN FROM V1.X AS D2
    WHERE D2.DLR = V.DLR AND (D2.RGN = ? OR D2.RGN = ?)) FROM V1
    <left join all the tables>' to Database.{datasource_name} values('Y','500','600');
    

    记住,?不应括在括号中。

    【讨论】:

      【解决方案2】:

      试试这样设置

      passthru ('select CASE WHEN T2.X_FLG = '||VariableName||'
      

      值为 Y 的变量名

      【讨论】:

      • 试过了,不行。 Passthru 将第一个 ' 视为字符串的结尾,并且不与 || 连接如你所料。
      【解决方案3】:

      你可以写成

      passthru('select CASE WHEN T2.X_FLG = ?', 'Y')
      

      您在查询后分别输入? 和逗号分隔值。

      【讨论】:

        【解决方案4】:
        SET result1 = passthru ('select CASE WHEN T2.X_FLG = ''Y'' AND (SELECT D2.RGN FROM V1.X AS D2 WHERE D2.DLR = V.DLR AND (D2.RGN = ''500'' OR D2.RGN = ''600'')) FROM V1 <left join all the tabels>');
        

        我的意思是说使用双单引号(''string value'') 这将被视为一个值而不是查询的终止。希望这会奏效。

        请注意这不是双引号,它的单引号两次。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-15
          • 2012-01-07
          • 2021-05-28
          • 1970-01-01
          • 2020-12-20
          • 1970-01-01
          相关资源
          最近更新 更多