Я хочу иметь возможность выполнять несколько независимых хранимых процедур, которые могут содержать аргументы типа NUMBER (IN)
, VARCHAR (IN)
и CURSOR (OUT)
.
Результаты вывода CURSOR затем используются приложением .NET для создания структуры JSON в качестве ответа API на запрос HTTP. Ожидается второстепенная производительность, и я изучаю области оптимизации, помимо очевидных.
dbms_scheduler
подход был опробован, но неясно, как можно использовать тип CURSOR.
Следующие шаги были экспериментированы без определенных результатов.
/* Steps tried.
1. dbms_scheduler.create_program
2. dbms_scheduler.define_program_argument
3. dbms_scheduler.create_job
4. dbms_scheduler.set_job_argument_value
*/
-- Parent proc
PROCEDURE get_all_customer_details_prc (
i_customer_id IN customer.pecustomer_id%TYPE,
i_year IN customer_instance.year_value%TYPE,
oc_customer_details_data OUT SYS_REFCURSOR,
oc_customer_purchase_data OUT SYS_REFCURSOR
)
BEGIN
-- Can the two procedures at the same time, so that the
-- get_customer_details_prc returns when the longest taking proc finalises?
-- Child proc 1
PROCEDURE get_customer_details_prc (
i_customer_id,
oc_customer_details_data
);
-- Child proc 2
PROCEDURE get_customer_purchase_details_prc (
i_customer_id,
i_year,
oc_customer_purchase_data
);
END;