Таблица-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.