繁体   English   中英

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

[英]how to get row count from Tibco Direct SQL or JDBC Query activity

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

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

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

如果第一个查询结果小于1000,我将调用同一查询以获取所有行

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

该查询非常繁琐,出于性能目的,我只希望运行一次。

我从SQL端的SELECT语句后需要行计数中找到了解决方案:最佳的SQL方法是什么?

我可以像这样使用查询:

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

问题在于,将count(*)添加到查询还会影响性能。

我可以将查询结果映射到“映射数据”活动,然后使用count($ Map-Data / pfx:my_element /),但我希望避免出于性能目的而进行其他不必要的映射。

Tibco“直接SQL”和Tibco“ JDBC查询”正在使用Oracle(ojdbc7.jar)和DB2(jt400.jar)驱动程序。

有什么方法可以从tibco端获取查询输出行数,而无需在查询输出中增加计数?

我终于得到了我所需要的。 我可以直接从“ SQL Direct”或“ JDBC Query”活动输出中直接使用XPATH“计数”功能

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

“ SQL直接”:count($ SQL-Direct / jdbcGeneralActivityOutput / unknownResultset / row)<1000

JDBC查询行数

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM