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;