在 .NET 数据表中,列是对象类型,它可以包含数据表作为列的有效类型。所以你可以创建一个相当复杂的结构:
CompanyID (Integer) | CompanyName (String) | OrderRecords (DataTable)
---------------------------------------------------------------------------
1 | Acme Corp. | DataTable of Orders
在调用 Oracle 存储过程时,有没有办法返回这样的结构。我尝试使用内联视图,但它不允许我这样做。例子:
refCursor IS ref CURSOR;
PROCEDURE GETCOMPANYLIST (
CompanyCursor OUT refCursor
)
AS
BEGIN
Open CompanyCursor For
SELECT COMPANYID, COMPANYNAME,
(SELECT * FROM ORDERS WHERE CompanyID = CompanyID) OrderRecords
WHERE IsActive = 'T';
END GETCOMPANYLIST;
这不起作用,但有什么办法可以做我想做的事情吗?目前,我必须在一次调用数据库中取回公司列表,然后遍历所有记录并进行单独调用以获取每个订单列表。
[添加了有效答案 - 直到现在还没有真正回答问题的答案]