Oracle
 sql >> база данни >  >> RDS >> Oracle

Конкатениране на колекции в PLSQL

Ако използвате 10g или по-нова версия, можете да направите функцията CONCAT() малко по-ефективна, като използвате оператора MULTISET UNION:

FUNCTION concat (
    iList1 IN ID_ARRAY,
      iList2 IN ID_ARRAY
) 
RETURN ID_ARRAY IS
    lConcat ID_ARRAY;
BEGIN
    lConcat := iList1 
               MULTISET UNION  
               iList2 A
    ;
    RETURN lConcat;
END concat;

Бихте могли да направите нещата по-ефективни, като попълните няколко различни масива и след това извикате MULTISET UNION веднъж за всички тях:

   lConcat := iList1 
               MULTISET UNION  
               iList2  
               MULTISET UNION  
               iList3
               MULTISET UNION  
               iList4;  

Използване на динамичен SQL - вероятно за замяна на различните get_idsN() функции - може да е подход, който си струва да се проучи, но вероятно няма да ви даде много, ако изобщо има нещо, като подобрена производителност.

Временните таблици не са добра идея, защото се представят много зле в сравнение с правенето на неща в паметта.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как се изчислява коефициентът на клъстериране на Oracle Index

  2. ORA-00942:Може ли да избира от schema.table, но не и таблица?

  3. УНИКАЛНО ограничение срещу проверка преди INSERT

  4. SQL Server еквивалент на Oracle „CONNECT BY PRIOR“ и „ORDER SIBLINGS BY“

  5. Oracle sql заявка за групиране на последователни записи по дата