Bonjour,

Voilà mon code, j'essaye de paralléliser une requête par ROWID, dans le select, une fonction qui calcule et écrit dans une autre table (tout cela packagé) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
DECLARE
 
    c_update_statement CONSTANT VARCHAR2 (2000)
    := 'select  PKG_STOCK.so_f_ea_insert_mb_new(ad.adhe_cod_prod, ad.adhe_no_adhes, decode(trunc(sysdate), trunc(last_day(sysdate)), trunc(SYSDATE)
                                                                                                                                  , decode(to_char(sysdate, ''D''), 5, trunc(SYSDATE)
                                                                                                                                                                   , trunc(SYSDATE)))) 
        from  /*+ ROWID (dda) */ ADHESIONS ad
        where ROWID BETWEEN :starting_rowid AND :ending_rowid';
 
    c_task_name   CONSTANT VARCHAR2 (20) := 'Give Raise';
    l_attempts    PLS_INTEGER := 1;
    retries_in    PLS_INTEGER := 2;
    l_d_effet     DATE;
 
BEGIN   
  BEGIN 
    DBMS_OUTPUT.put_line('[SQL-INFO] Lancement du script');
    DBMS_PARALLEL_EXECUTE.CREATE_TASK (c_task_name);
 
    DBMS_PARALLEL_EXECUTE.CREATE_CHUNKS_BY_ROWID (task_name => c_task_name
                             , table_owner => USER
                             , table_name => 'ADHESIONS'
                             , by_row => TRUE
                             , chunk_size => 1000
                              );

Mais lorsque j'exécute le suite le statut de la tâche passe en CRASHED !!! et mon job se termine, pouvez-vous m'éclairer sur l'origine du crash et si ma requête initiale est bien implémentée, merci !

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
DBMS_PARALLEL_EXECUTE.RUN_TASK (task_name => c_task_name
                  , sql_stmt => c_update_statement
                  , language_flag => DBMS_SQL.native
                  , parallel_level => 10
                   );
Cdlt,