如何在 SQL Proc 中为 Intersystems Cache 数据库使用对象脚本

How to use object script in a SQL Proc for an Intersystems Cache database

Intersystems Cache 为针对缓存数据库的 运行 SQL 关系查询提供接口。当尝试跨对象数据结构进行聚合查询时,速度非常慢,有时几乎不可能。

有没有办法在不使用低性能 SQL 查询的情况下将对象脚本方法 return 数据行作为 SQLProc 类型。

我查看了 rset 和 %List 对象,但我似乎无法将它们联系起来。

我可以 return 分隔字符串,但我需要能够将其作为存储过程公开给报告引擎,例如 Crystal 等

公开自定义查询结果的方法有多种,它们都在此处的文档中提到:

http://docs.intersystems.com/cache20141/csp/docbook/DocBook.UI.Page.cls?KEY=GSQL_procedures

如文档所示,首选方法是使用 %SQL.CustomQuery class 将每个自定义查询定义为单独的 class;有关此方法的示例,请参阅 SAMPLES 命名空间中的 Sample.CustomResultSet。

您还可以在单​​个 class 中使用自定义 Execute/Fetch/Close 方法定义多个 SQL 查询。 %Dictionary 包在以 "Query" 结尾的 classes 中有很多这种方法的例子。您还可以在系统项中搜索“%Query”以获取更多示例。