如何从Tibco Direct SQL或JDBC Query活动中获取行数

时间:2018-04-17 15:29:15

标签: sql tibco ojdbc tibco-business-works

在我的Tibco流程中,只有当查询从Tibco“Direct SQL”或Tibco“JDBC Query”活动返回少于1000条记录时,我才有逻辑映射SQL查询输出。

现在我只是运行2次相同的查询:

Select count(*) AS Count 
FROM my_table  
WHERE my_table.foo = 'bar'

如果第一个查询结果小于1000,我会调用相同的查询来获取所有行

Select my_table.* 
FROM my_table  
WHERE my_table.foo = 'bar'

查询非常繁重,我只想运行一次以达到性能目的。

我在Need a row count after SELECT statement: what's the optimal SQL approach?

中找到了SQL端的解决方案

我可以使用如下查询:

SELECT my_table.*, count(*) OVER() AS Count
  FROM my_table
 WHERE my_table.foo = 'bar'

问题是在查询中添加count(*)也会影响性能。

我可以将查询结果映射到“地图数据”活动,然后使用count($ Map-Data / pfx:my_element /),但我更愿意为了性能目的而避免额外的不需要maping。

Tibco“Direct SQL”和Tibco“JDBC Query”正在使用Oracle(ojdbc7.jar)和DB2(jt400.jar)驱动程序。

有没有办法从tibco端获取查询输出行数而不向查询输出添加计数?

1 个答案:

答案 0 :(得分:1)

我终于得到了我需要的东西。我可以使用XPATH" count"直接来自" SQL Direct"或" JDBC Query"活动输出

" JDBC查询":     count($ JDBC-Query / resultSet / Record)< 1000

" SQL Direct":     count($ SQL-Direct / jdbcGeneralActivityOutput / unknownResultset / row)< 1000

JDBC Query row count