Как добавить спец. строку в XML select ?

sergeyvg
Дата: 28.02.2007 08:49:16
Oracle 9.2.0.7, есть строка
<?xml version="1.0" encoding="windows-1251"?>
как ее добавить, к примеру, в такой select
select 
XMLElement("ФайлПФР",
        XMLElement("ИмяФайла", '123.XML')
)
from dual
Kovalchuk Vitaly V
Дата: 28.02.2007 12:11:20
select '<?xml version="1.0" encoding="windows-1251"?>'||
XMLElement("ФайлПФР",
        XMLElement("ИмяФайла", '123.XML')
)
from dual

sergeyvg
Дата: 28.02.2007 12:54:36
действительно, для этого примера отработало:)
но для реального, где много данных дает ошибку
ORA-19011: Character string buffer too small
AlexOI
Дата: 28.02.2007 13:04:22
sergeyvg
действительно, для этого примера отработало:)
но для реального, где много данных дает ошибку
ORA-19011: Character string buffer too small


Максимальный размер varchar2 возвращаемого SQL - 4000 байт.
Вам нужно выгрузить ваш XML в clob и после этого добавлять строку

declare
xmlOut xmltype;
clOut clob;
begin
select <XML...> into xmlOut from dual;
clOut := '<?xml version=''1.0'' encoding=''windows-1251'' ?>' || xmlOut.getClobVal;
end;
Kovalchuk Vitaly V
Дата: 28.02.2007 13:36:31
sergeyvg
действительно, для этого примера отработало:)
но для реального, где много данных дает ошибку
ORA-19011: Character string buffer too small

Я так подозреваю что дальше вы свой XML select будете выгружать в файл. Если это так то перед выгрузкой XML в файлик добавте просто строку.
Например
UTL_FILE.Put_Line(fOut,'<?xml version="1.0" encoding="windows-1251"?>');
А дальше просто выгружаете весь CLOB.

Если это не так то можно уже к готовому clob добавить строку c помощью dbms_lob.Instr
sergeyvg
Дата: 28.02.2007 14:07:03
спасибо всем за советы, похоже остановлюсь на
select '<?xml version="1.0" encoding="windows-1251"?>'||
(XMLElement("ФайлПФР",
        XMLElement("ИмяФайла", '123.XML')
 )
).getClobVal()
from dual