Как преобразовать строку в clob?

у меня процедура

PROCEDURE test_proc (text IN Clob) as
Begin
  insert into table_name values(SYSDATE,xmltype.createxml(text));
end ;

И я бегу

begin
  test_proc('.....text...');
end;

Длина текста 64,8 КБ.

erorr: PLS-00172: слишком длинный строковый литерал

Но если я вставлю текст в значение/выражение (SQL Navigator 6.7.0 Relase) и выполню процедуру -> блок PL/SQL будет выполнен


person Andre Kirpitch    schedule 26.09.2013    source источник
comment
Что такое сценарий создания для вашей таблицы? Запустив код с таблицей CREATE TABLE table_name (when DATE, content XMLTYPE);, я получаю ORA-31011: XML parsing failed, что нормально.   -  person mavroprovato    schedule 26.09.2013
comment
CREATE TABLE table_name ( date_rep DATE, save_rep XMLTYPE) XMLTYPE save_rep STORE AS OBJECT RELATIONAL XMLSCHEMA name_schema.xsd ELEMENT name_element; , где name_schema.xsd — это DBMS_XMLSCHEMA.registerSchema.   -  person Andre Kirpitch    schedule 26.09.2013
comment
Максимальный размер varchar2 составляет 32 КБ.   -  person Jeffrey Kemp    schedule 27.09.2013


Ответы (1)


Проблема не в преобразовании, проблема в вашем строковом литерале. Он слишком велик для парсера Oracle SQL.

Может быть, вместо этого загрузить CLOB из файла?

person mavroprovato    schedule 26.09.2013
comment
Но, если я вставлю текст в SQL Navigator 6.7.0 Relase и выполню процедуру -> выполнен блок PL/SQL - person Andre Kirpitch; 27.09.2013