Bonjour,

Afin de mener des tests de performances, je cherche a lancer un select en parallele.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
with test$mt as (select n from cpu_test where rownum <= 4 )
SELECT /*+ PARALLEL (P 4) 40 */ ma_func_de_test FROM test$mt P;
Fonctionne parfaitement dans SQL*Plus. Je le vois avec SQLTrace et le nombre d'IO.

Ceci dit, je voudrais bien l'integrer dans mon package PL/SQL.
Mais bon, EXECUTE IMMEDIATE ne fonctionne pas (Any valid SQL command except SELECT can be run immediately.), et je peux pas l'ecrire directement sous la forme d'un select, les Hints sont pris (a juste titre) pour des commentaires.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
      WITH TEST$MT AS
       (SELECT N
          FROM CPU_TEST
         WHERE ROWNUM <= NUM_OF_THREAD )
      SELECT /*+ PARALLEL (P  || NUM_OF_THREAD || ') ' ||
                                     G_LONGOP.SOFAR || ' */
       ma_function 
        INTO STR
        FROM TEST$MT P;
L'un d'entre vous aurait-il une idee?