私はこの問題を抱えています。誰かが答えを知っていることを願っています。顧客 ID を受け取り、すべての顧客の注文を ref_cursor に返す Oracle ストアド プロシージャがあります。それを単純化しすぎて、これは私が持っているものです:
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 に追加するにはどうすればよいですか? 現在書かれているように、ループの各サイクルで上書きされます。ありがとう!!