如何同时/并行执行多个Oracle存储过程以获得更好的性能?

时间:2019-06-10 11:02:40

标签: sql oracle stored-procedures cursors

我希望能够执行几个独立的存储过程,这些存储过程可以包含NUMBER (IN)VARCHAR (IN)CURSOR (OUT)类型的参数。

.NET应用程序随后将CURSOR输出的结果用于生成JSON结构,作为对HTTP请求的API响应。预期会达到亚秒级的性能,除了明显的性能外,我还在探索优化领域。

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;

0 个答案:

没有答案