Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Metoda alternatywna do globalnych tabel tymczasowych dla procedury składowanej Oracle

Tabele T-SQL Temp są zasadniczo strukturami pamięci. Zapewniają korzyści w MSSQL, które są mniej oczywiste w Oracle, ze względu na różnice w dwóch architekturach RDBMS. Więc jeśli chcesz przeprowadzić migrację, dobrze byłoby zastosować podejście bardziej dopasowane do Oracle.

Jednak masz inną sytuację i oczywiście synchronizacja dwóch baz kodu ułatwi ci życie.

Najbliższe tabelom tymczasowym są kolekcje PL/SQL; w szczególności tabele zagnieżdżone.

Istnieje kilka sposobów na ich zadeklarowanie. Pierwszym z nich jest użycie szablonu SQL – kursora – i zdefiniowanie na jego podstawie typu zagnieżdżonej tabeli. Drugim jest zadeklarowanie typu rekordu, a następnie zdefiniowanie na nim zagnieżdżonej tabeli. W obu przypadkach wypełnij zmienną kolekcji operacją zbiorczą.

declare
    -- approach #1 - use a cursor
    cursor c1 is 
          select *
          from t23;
    type nt1 is table of c1%rowtype;
    recs1 nt1;

    -- approach #1a - use a cursor with an explicit projection
    cursor c1a is 
          select id, col_d, col_2 
          from t23;
    type nt1a is table of c1a%rowtype;
    recs1 nt1a;


    -- approach #2 - use a PL/SQL record
    type r2 is record (
        my_id number
        , some_date date
        , a_string varchar2(30)
    );
    type nt2 is table of r2;
    recs2 nt2;
begin
    select *
    bulk collect into recs1
    from t23;

    select id, col_d, col_2
    bulk collect into recs2
    from t23;
end;
/

Korzystanie z kursora ma tę zaletę, że automatycznie odzwierciedla zmiany w tabeli lub tabelach źródłowych. Chociaż RECORD zapewnia przewagę stabilności w obliczu zmian w tabeli(ach) poniżej. To zależy od tego, czego chcesz :)

W podręczniku PL/SQL znajduje się cały rozdział. Przeczytaj go, aby dowiedzieć się więcej .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Grupuj według vs Partycja według w Oracle

  2. upuść przestrzeń tabel, jeśli nie istnieje

  3. Oracle 12c IDENTYFIKOWANE WARTOŚCIAMI

  4. Używanie Types.NVARCHAR ze sterownikiem Oracle JDBC do pracy ze znakami cyrylicowymi

  5. java.sql.SQLWyjątek:ORA-00904