Re[6]: PL/SQL таблицы.
От: SHorrty Россия  
Дата: 19.05.04 10:06
Оценка:
Здравствуйте, Denis Popov, Вы писали:

DP>Здравствуйте, SHorrty, Вы писали:


SH>>Здравствуйте, Denis Popov, Вы писали:


DP>>>Ну да: есть функция, возвращающая объектную таблицу. Ее результат можно подсунуть тому же DBMS_XMLGEN:

DP>>>
DP>>>select dbms_xmlgen.getXML('select * from table(cast(my_function as my_table_type))') xml from dual;
DP>>>


SH>>Ок. Это я так понимаю, мы в PIPELINE упираемся...


DP>PIPELINED-функции в Oracle 9i появились, а вышеприведенный код пройдет начиная с Oracle8i. Можно попытаться сделать запрос прямо из переменной типа "Объектная таблица", описаной, к примеру, в спецификации пакета. Надо будет проверить, допустимо ли это.


SH>>А если вернуться к произвольным коллекциям, с типом не хранимым в БД?


DP>А где хранится описание этой коллекции, в каком виде?



Где угодно. Не обязательно, что она объявлена в спецификации.
Вообщем Суть: программер хранит нужные ему данные в созданной под себя коллекции, ему нужно представить эту коллекцию в виде XML:


DECLARE
    /* Типы */
    TYPE T_REC IS RECORD(n NUMBER, d DATE, с VARCHAR2(300));
    TYPE T_TAB IS TABLE OF T_REC;
    
    /* Переменные */
    v_Tmp    T_TAB;
    l_Xml    sys.XmlType;
BEGIN
    
    /*
        как-то там заполняем таблицу v_Tmp
    */
    
    -- Хотим конвертить v_Tmp в XML
    l_Xml := convert_function(v_Tmp);
    
END;


Встает вопрос, как так можно (и возможно ли вообще ?) организовать функцию convert_function (либо пакет аналогичной направленности) ?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.