Oracle 12c / Dotazování z asociativního pole

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 potřeba 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ář

Vaše emailová adresa nebude zobrazena. Povinná pole jsou označena *