Oracle
 sql >> Base de données >  >> RDS >> Oracle

Pouvons-nous spécifier dynamiquement le degré de parallélisme ?

Vivek,

Vous pouvez utiliser SQL dynamique pour créer votre instruction INSERT dans une fonction ou une procédure PL/SQL. De cette façon, vous pourrez utiliser la variable "degré" que vous avez déjà récupérée.

Quelque chose comme :

DECLARE
   degree varchar2(1); 
BEGIN 
   select value-2 
     INTO degree 
     from v$parameter
    where name='cpu_count';              

   EXECUTE IMMEDIATE('INSERT /*+ APPEND PARALLEL (tst, '||degree||') */ '||
                     '  INTO test_table tst ( '||
                     '       **************  '||
                     '       **************  '||
                     '       **************  '||
                     '  ) '||
                     'SELECT /*+  PARALLEL (a, '||degree||') */ '||
                     '       DISTINCT '||
                     '       ************** '||
                     '       ************** '||
                     '       ************** '||
                     '  FROM src_table a');
END;