gpt4 book ai didi

oracle - 返回 Oracle 引用游标并附加多个结果

转载 作者:行者123 更新时间:2023-12-04 22:38:54 25 4
gpt4 key购买 nike

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

最佳答案

你不能那样做——不能追加或合并游标。只需这样做:

PROCEDURE GetOrderbyCustName(
p_name IN VARCHAR2,
curReturn OUT sys_refcursor
)
IS
BEGIN
OPEN curReturn FOR
SELECT o.orderID, o.siteID
FROM Orders o
JOIN Customers c ON c.siteID = o.siteID
WHERE c.name LIKE p_name;
END GetOrderbyCustName;

关于oracle - 返回 Oracle 引用游标并附加多个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/417178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com