【发布时间】:2020-09-30 12:30:32
【问题描述】:
我可以使用 SDK 获取报告规范 XML,并且可以在其中获取 SQL 到数据库。但是,如果我们使用模块/包,则报告规范不包含本机 SQL。类似于在报表工作室中获取生成的 SQL。有没有办法使用 SDK 获取 Native SQL(生成的 SQL)。 谢谢, 电信标准化局
【问题讨论】:
我可以使用 SDK 获取报告规范 XML,并且可以在其中获取 SQL 到数据库。但是,如果我们使用模块/包,则报告规范不包含本机 SQL。类似于在报表工作室中获取生成的 SQL。有没有办法使用 SDK 获取 Native SQL(生成的 SQL)。 谢谢, 电信标准化局
【问题讨论】:
我想是的,在带有 SDK 的 cognos 中使用 BIBUS 对象寻找 reportversion 方法,然后是 SQL 属性。
IBM 上有可用的示例代码,但似乎 IBM 已删除该 URL。
【讨论】:
是的,您可以通过reportService.validate() 方法获取SQL。但是,需要处理两个问题:1) 需要提供提示值(如果需要),以及 2) 您必须使用 Cognos SDK asynchronous conversation 才能运行验证以完成并检索结果。
学习并让异步对话正常工作可能需要一些时间,但 Cognos 根目录中提供的示例中有用于验证的示例代码。在 Cognos 11 中,这些示例方便地位于 Cognos 根目录下的 samples 文件夹中。您将在那里找到 Java 示例,这些示例演示了如何提交使用异步对话的请求,并执行诸如提交提示值之类的操作,并告诉 Cognos 您正在等待并且仍然对结果感兴趣。
如果您确实可以完成请求,则响应的detail 属性将包含一个具有queryInfo property 的asynchDetailReportValidation 对象。此 XML 将包含报表在运行时将执行的每个查询的 SQL。
【讨论】: