Ich habe dieses Problem, das ich hoffe, jemand weiß die Antwort auf. Ich habe eine Oracle gespeicherte Prozedur, die eine Kunden-ID nimmt und alle Bestellungen des Kunden in einem ref_cursor zurückgibt. Vereinfacht gesagt, habe ich folgendes Problem:
Orders
- orderId
- siteID
Customers
- siteID
- Name
GetOrder(siteID, outCursor) /* returns all orders for a customer */
Jetzt muss ich eine andere Prozedur schreiben, die einen Kundennamen nimmt und tut eine LIKE-Abfrage, um alle custIds zu erhalten, dann muss ich die GetOrder-Methode wiederverwenden, um alle Aufträge für die custIds gefunden, etwas wie dieses zurückzugeben:
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;
Meine Frage ist, wie ich die Rückkehr von GetOrder an curReturn in jeder Iteration anhängen? So wie es im Moment geschrieben ist, wird es in jedem Zyklus der Schleife überschrieben. Danke!!!
1 Stimmen
Kleiner Hinweis zum Stil: Wenn Sie mehrere Bestellungen zurücksenden, dann
GetOrder
sollte umbenannt werden inGetOrders
aus Gründen der Klarheit.