Если цель состоит в том, чтобы просто вернуть значение 'ID' для каждой строки как XML, вам следует взглянуть на функции SQLXML.
В вашем случае попробуйте следующее:
SELECT XMLFOREST(id) FROM table
Он легко обрабатывает несколько столбцов:
SELECT XMLFOREST(id, col2, col3,) FROM table
Чтобы вложить это между элементом данных:
SELECT XMLELEMENT( "Data", XMLFOREST(id) ) FROM table
Собираем все вместе:
DECLARE
l_file UTL_FILE.FILE_TYPE;
l_xmltype XMLType;
BEGIN
SELECT XMLELEMENT( "Data", XMLFOREST(id) )
INTO l_xmltype
FROM table;
l_file := UTL_FILE.fopen ('EXPORT', 'output.xml', 'w');
UTL_FILE.PUT_LINE(l_file , l_xmltype.getStringVal( ));
UTL_FILE.fclose (l_file);
END;
/
Обратите внимание: если размер XML превышает 32 КБ, вам нужно записать файл в виде кусков.