Я написал следующую процедуру оракула, чтобы получать данные навалом и обрабатывать их в блоках. Я использую опцию массового сбора с ограничением для извлечения данных. Но внутри цикла я не могу получить ORD_ID. Я пытаюсь вывести ORD_ID с помощьюOracle PLSQL BULK Collect and For Loop
DBMS_OUTPUT.put_line(l_orders(indx));
Но получаю ошибку компиляции «неверный номер или тип аргументов в вызове" PUT_LINE»
create or replace PROCEDURE TESTPROC AS
CURSOR order_id_cur IS SELECT ORD_ID FROM orders ORDER BY ORD_ID ASC;
l_order_id VARCHAR2(100);
TYPE orders_aat IS TABLE OF order_id_cur%ROWTYPE;
l_orders orders_aat;
limit_in NUMBER :=10;
batch_in NUMBER :=0;
BEGIN
OPEN order_id_cur;
LOOP
FETCH order_id_cur
BULK COLLECT INTO l_orders LIMIT limit_in;
DBMS_OUTPUT.put_line('Batch-----'||batch_in);
FOR indx IN 1 .. l_orders.COUNT
LOOP
DBMS_OUTPUT.put_line(indx);
DBMS_OUTPUT.put_line(l_orders(indx));
END LOOP;
EXIT WHEN l_orders.COUNT < limit_in;
batch_in := batch_in+1;
END LOOP;
CLOSE order_id_cur;
END TESTPROC;
Как я могу получить значения ORD_ID внутри для цикла.
Спасибо ... Я пытался другим способом l_orders.ORD_ID (indx) – Andromeda
Добро пожаловать! –
Еще одно сомнение ... возможно ли сразу получить все ORD_ID вместо использования для цикла и итерации через каждый. в основном я хочу использовать все ord_ids в операторе IN ...eg 'delete from orders_bckup где ord_id in (allOrderIds)' – Andromeda