【发布时间】:2009-01-06 16:20:27
【问题描述】:
我有这个问题,希望有人知道答案。我有一个 oracle 存储过程,它接受一个客户 ID 并在 ref_cursor 中返回所有客户的订单。过度简化它,这就是我所拥有的:
Orders
- orderId
- siteID
Customers
- siteID
- Name
GetOrder(siteID, outCursor) /* returns all orders for a customer */
现在,我需要编写另一个过程,它接受客户名称并执行 LIKE 查询以获取所有 custId,然后我需要重用 GetOrder 方法来返回找到的 custId 的所有订单,如下所示:
PROCEDURE GetOrderbyCustName(
p_name IN VARCHAR2,
curReturn OUT sys_refcursor
)
IS
siteid number;
BEGIN
FOR rec in SELECT site_id FROM customers WHERE name LIKE p_name
LOOP
-- This will replace curReturn in each iteration
-- how do I append instead?
GetOrder(rec.site_id,
curReturn
);
END LOOP;
END GetOrderbyCustName;
我的问题是,如何在每次迭代中将 GetOrder 的返回值附加到 curReturn 中?正如它现在所写的那样,它会在循环的每个循环中覆盖它。 谢谢!!
【问题讨论】:
-
次要风格点:如果您要返回多个订单,那么为了清楚起见,
GetOrder应该重命名为GetOrders。
标签: oracle sys-refcursor