0

我正在研究 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 编译器给我编译器错误,说它是一个语法错误。

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

4

4 回答 4

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');

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

于 2012-05-08T19:29:44.020 回答
0

试试这样设置

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

具有值 Y 的变量名

于 2012-04-18T18:49:34.220 回答
0
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'')这将被视为一个值而不是查询的终止。希望这会奏效。

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

于 2013-07-20T08:16:20.373 回答
0

你可以写成

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

您分别在查询后 simplay put?和逗号分隔值。

于 2017-02-14T07:25:26.723 回答