bbe*_*ard 5 sql oracle messagebroker ibm-integration-bus extended-sql
我在esql(IBM Websphere Message Broker)中有一个子流,我需要在其中实现类似于select distinct
功能的功能。
一些背景:我在Oracle数据库中有一个表group_errcode_ref
。该表几乎是ERROR_CODE
and 的固定链接/映射ID
。ERROR_CODE
是唯一的,但ID
可以重复。例如,错误代码4000和4001都可以链接到ID 1。
在我的esql子流中,我有一系列错误代码,这些错误代码根据进入该流的当前数据而有所不同。
所以我需要做的是获取输入错误代码数组,并ID
从表中为数组中的所有错误代码选择group_errcode_ref
我现在所拥有的:
declare db rows;
set db.rows[] = (select d.ID from Database.group_errcode_ref as d where d.ERROR_CODE in (select D from errCodes.Code[] as D);
Run Code Online (Sandbox Code Playgroud)
errCodes
是来自输入的错误代码的数组。row
是与错误代码对应的所有ID的数组。
很好,但是我想从db.rows[]
数组中删除重复项。
我不确定在esql中执行此操作的最佳方法,但它不支持distinct
。group by
, 要么order by
小智 2
如果您使用 PASSTHRU 语句,则支持数据库管理器的所有功能,因此也各不相同。
您必须克服的唯一问题是您不能在 PASSTHRU 中直接混合数据库和消息树查询,您传递给它的所有内容都会直接发送到数据库。
所以你原来的解决方案看起来像这样:
set db.rows[] = PASSTHRU 'select distinct d.ID from SCHEMA.group_errcode_ref as d where d.ERROR_CODE in ' || getErrorCodesFromInput(errCodes) TO Database.DSN1;
Run Code Online (Sandbox Code Playgroud)
这里 getErrorCodesFromInput 是一个返回字符的函数,其中包含输入中的错误代码,格式正确以适合查询,例如(ec1,ec2,...)
归档时间: |
|
查看次数: |
3339 次 |
最近记录: |