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

Алтернатива за временна таблица на MySQL в Oracle

В Oracle много рядко се нуждаете от временна таблица на първо място. Обикновено имате нужда от временни таблици в други бази данни, тъй като тези бази данни не прилагат последователност на четене с няколко версии и има потенциал някой, който чете данни от таблицата, да бъде блокиран, докато вашата процедура се изпълнява или вашата процедура да направи мръсно четене, ако го направи не запазвайте данните в отделна структура. Не се нуждаете от глобални временни таблици в Oracle по нито една от тези причини, тъй като читателите не блокират писатели и мръсните четения не са възможни.

Ако просто се нуждаете от временно място за съхранение на данни, докато извършвате PL/SQL изчисления, PL/SQL колекциите се използват по-често от временните таблици в Oracle. По този начин не прехвърляте данни напред-назад от PL/SQL машината към SQL машината и обратно към PL/SQL машината.

CREATE PROCEDURE do_some_processing
AS
  TYPE emp_collection_typ IS TABLE OF emp%rowtype;
  l_emps emp_collection_type;

  CURSOR emp_cur
      IS SELECT *
           FROM emp;
BEGIN
  OPEN emp_cur;
  LOOP
    FETCH emp_cur 
     BULK COLLECT INTO l_emps
    LIMIT 100;

    EXIT WHEN l_emps.count = 0;

    FOR i IN 1 .. l_emps.count
    LOOP
      <<do some complicated processing>>
    END LOOP;
  END LOOP;
END;

Можете да създадете глобална временна таблица (извън процедурата) и да използвате глобалната временна таблица във вашата процедура точно както бихте използвали всяка друга таблица. Така че можете да продължите да използвате временни таблици, ако желаете. Но мога да преброя на една ръка колко пъти наистина имах нужда от временна таблица в Oracle.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Показване на изображения от MySQL база данни в една колона на JTable

  2. Не мога да използвам псевдоним в sql delete

  3. Как да създадете нова диаграма на база данни с помощта на MySQL Workbench

  4. mysql е мъртъв, но подсистемата е заключена

  5. Как да върна всички привилегии на root потребител в MySQL?