sql >> Databáze >  >> RDS >> Oracle

Alternativní metoda ke globálním dočasným tabulkám pro Oracle Stored Procedure

T-SQL Temp tabulky jsou v podstatě paměťové struktury. Poskytují výhody v MSSQL, které jsou v Oracle méně zřejmé kvůli rozdílům ve dvou architekturách RDBMS. Takže pokud byste chtěli migrovat, pak by vám bylo dobře doporučeno zvolit přístup, který více vyhovuje Oracle.

Vy však máte jinou situaci a samozřejmě synchronizace dvou kódových základen vám usnadní život.

Nejbližší věc k dočasným tabulkám, jak je chcete používat, jsou kolekce PL/SQL; konkrétně vnořené tabulky.

Existuje několik způsobů, jak je deklarovat. První je použít SQL šablonu – kurzor – a na jejím základě definovat vnořený typ tabulky. Druhým je deklarovat typ záznamu a poté na něm definovat vnořenou tabulku. V obou případech naplňte proměnnou kolekce hromadnou operací.

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;
/

Použití kurzoru nabízí výhodu automatického zohlednění změn v podkladových tabulkách. Ačkoli RECORD poskytuje výhodu stability tváří v tvář změnám v podkladových tabulkách. Záleží jen na tom, co chcete :)

V referenční příručce PL/SQL je celá kapitola. Přečtěte si jej a dozvíte se více .




  1. Rails:Žádný fond připojení pro ActiveRecord::Base

  2. Nápověda k funkcím časového pásma

  3. Výukový program PL/SQL:Vše, co potřebujete vědět o PL/SQL

  4. Pohledy Postgres nejsou rozpoznány rspec