Я разрабатываю процедуру в pl / sql, которая получает набор данных из курсора, выполняемого в функции. Например:
Функция:
f_process_data(id_process IN NUMBER, id_product IN NUMBER)
Возвращает:
v_result_cursor sys_refcursor;
Но проблема в том, что при поиске курсора мне нужно отправить за раз более одного id_product. Примерно так:
id_product: 1240 (колбаса)
id_product: 1260 (ветчина)
¿Как я могу отправить (или получить) более одного продукта в функции?
Я понял, что это возможно с помощью цикла, но как?
Примерно так (?):
v_sausage := 1240;
v_ham := 1260;
LOOP
IF v_count = v_sausage OR v_count = v_ham THEN
v_result_cursor := f_process_data(1, p_id_product);
END IF;
FETCH v_result_cursor
INTO v_id, v_id_product;
EXIT WHEN v_result_cursor%NOTFOUND;
END LOOP;
Я ожидал, что v_id и v_id_product были записаны в коллекцию, включающую результаты id_product 1240 и 1260.
Но, если бизнес-правила меняются и это не только 2 продукта, то как насчет 100 или 1000 продуктов?
Примечание: курсор из функции, которую невозможно изменить, id_product должен отправляться один за другим.
CURSOR cu_get_value_products IS
SELECT value FROM supplies WHERE id = p_id and id_product = p_id_product;