Oracle 12c / Dotazování z asociativního pole
Přes to, že verze 12c databáze Oracle vyšla někdy v polovině roku 2013, stále její použití ve firmách není úplnou samozřejmostí. Některé zajímavé vlastnosti zachycuje série následujících příkladů.

Pro použití pole v SQL dotazech bylo dříve zapotřebí vytvořit „uložený“ typ na straně SQL serveru a uživateli přiřadit patřičná práva. Oracle 12c práci s poli výrazně zjednodušuje, dotazovat se lze z asociativního pole deklarovaného v packagi.

CREATE OR REPLACE PACKAGE MujBalik
AS
  -- asociativní pole řetězců
  TYPE Varchar_TT IS TABLE OF VARCHAR2(4000) INDEX BY PLS_INTEGER;

END;
/
DECLARE
  lt_Pole MujBalik.Varchar_TT;
  l_Pocet PLS_INTEGER;
BEGIN
  lt_Pole(1):='jedna';
  lt_Pole(2):='dva';
  
  SELECT COUNT(1)
    INTO l_Pocet
    FROM TABLE(lt_Pole)
  ;
  
  dbms_output.put_line(l_Pocet); -- 2
END;
Je ale poteba brát v potaz, že podobnou konstrukci bohužel stále nelze využít u DML operací.
CREATE TABLE tabulka(
      text VARCHAR2(4000)
  );
DECLARE
  lt_Pole MujBalik.Varchar_TT;
  l_Pocet PLS_INTEGER;
BEGIN
  lt_Pole(1):='jedna';
  lt_Pole(2):='dva';
  
  INSERT INTO tabulka
    SELECT *
      FROM TABLE(lt_Pole) -- ORA-00902: invalid datatype
  ;
END;


ZANECHTE KOMENTÁŘ


Velké díky pro teslathemes