sql >> Databasteknik >  >> RDS >> Oracle

Kan vi specificera graden av parallellism dynamiskt?

Vivek,

Du kan använda dynamisk SQL för att bygga upp din INSERT-sats i en PL/SQL-funktion eller -procedur. På så sätt kan du använda variabeln "grad" som du redan har hämtat.

Något i stil med:

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; 


  1. räkna utan grupp

  2. sql-fråga för att söka och ersätta text i alla rader

  3. I PostgreSQL, hur infogar man data med kommandot COPY?

  4. Hur identifierar man primärnyckeldupliceringen från en SQL Server 2008-felkod?