我有这个问题,我希望有人知道答案。我有一个 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 ?正如它现在所写的那样,它会在循环的每个循环中覆盖它。谢谢!!