0

这是一个查询方法:

Query getSample() As %SQLQuery [ SqlProc ]
{
    SELECT * FROM TEST.xSample
}

getSample Query 将由 VB 中的方法调用,并将分配给 DataTable 类型的对象。

一个 ClassMethod 怎么能返回可以分配给 DataTable 类型对象的相同 %SQLQuery?

4

2 回答 2

0

为什么要使用 ClassMethod 之类的 Query ?

于 2013-11-14T11:44:42.903 回答
0

我不知道将其作为类方法的返回值返回会很容易。基于 SQL 的接口能够处理结果集,包括了解调用代码需要迭代结果。如果结果的数量可以变得非常大,这可能是必要的!

因此,我认为您需要考虑如何处理结果。您可以使用%SQL.Statement返回类型的结果集%SQL.StatementResult,但由于结果集是动态生成的,因此您的界面不会非常清晰,并且仍然需要调用者对结果进行任何交互。这可能看起来像这样:

ClassMethod GetSample() As %SQL.StatementResult
{
  // Note - this code uses %ExecDirect() as a shortcut.
  // For more control over the resultset, instantiate a %SQL.Statement instance, and then call %Prepare() and %Execute()
  Set tResultSet = ##class(%SQL.Statement).%ExecDirect(,"SELECT * FROM Test.xSample")
  Quit tResultSet
}

您也可以返回一个对象列表,但是如果您的表很大,这可能会占用大量内存,并且您的调用代码仍然需要遍历结果并知道存在哪些属性。您可能想解释您实际需要对结果进行哪些操作以获得更好的答案。

于 2013-11-14T14:50:13.037 回答