Таблица-cast vs cast-multiset в pl-sql

зачем Table-CAST и CAST-Multiset?

пример Table-Cast


SELECT count(1)
INTO   v_Temp
FROM   TABLE(CAST(Pi_Save_Data_List AS Property_data_list))
WHERE  Column_Value LIKE '%Contact';

пример Cast-Multiset


SELECT e.last_name,
   CAST(MULTISET(SELECT p.project_name
   FROM projects p 
   WHERE p.employee_id = e.employee_id
   ORDER BY p.project_name)
   AS project_table_typ)
FROM emps_short e;

какой-то прирост производительности или влияние на код?

1 ответов


функция TABLE () приводит вложенный тип таблицы к реляционному результирующему набору. Это позволяет нам запрашивать ранее заполненную коллекцию в SQL.

вызов функции CAST(MULTISET()) преобразует реляционный результирующий набор в тип коллекции. Это в основном используется при вставке в таблицу со столбцом, определенным как вложенная таблица.

немногие сайты используют объектно-реляционные функции в своих постоянных структурах данных, поэтому второе использование довольно редко. Но возможность использования коллекций во встроенных SQL-операторах - очень классная техника и широко используется в PL/SQL.