Как выполнить несколько хранимых процедур Oracle одновременно / параллельно для повышения производительности? - PullRequest
1 голос
/ 10 июня 2019

Я хочу иметь возможность выполнять несколько независимых хранимых процедур, которые могут содержать аргументы типа 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;
...