这是一个查询方法:
Query getSample() As %SQLQuery [ SqlProc ]
{
SELECT * FROM TEST.xSample
}
getSample Query 将由 VB 中的方法调用,并将分配给 DataTable 类型的对象。
一个 ClassMethod 怎么能返回可以分配给 DataTable 类型对象的相同 %SQLQuery?
这是一个查询方法:
Query getSample() As %SQLQuery [ SqlProc ]
{
SELECT * FROM TEST.xSample
}
getSample Query 将由 VB 中的方法调用,并将分配给 DataTable 类型的对象。
一个 ClassMethod 怎么能返回可以分配给 DataTable 类型对象的相同 %SQLQuery?
为什么要使用 ClassMethod 之类的 Query ?
我不知道将其作为类方法的返回值返回会很容易。基于 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
}
您也可以返回一个对象列表,但是如果您的表很大,这可能会占用大量内存,并且您的调用代码仍然需要遍历结果并知道存在哪些属性。您可能想解释您实际需要对结果进行哪些操作以获得更好的答案。