почему XMLTYPE.getClobVal () не работает на 9i, как на 11g? - PullRequest
0 голосов
/ 23 ноября 2010

Итак, на 11g я могу без проблем выполнить следующую команду plsql:

DECLARE
  lob1 CLOB;

BEGIN

  SELECT e.xml_col.getClobVal() INTO lob1 FROM "XML"."XML_TABLE" e WHERE KEY_COL=3 ;
  DBMS_LOB.APPEND(lob1, 'is a test node</test>');

END;

Но на 9i тот же код приводит к ORA-22275: ошибка, указанная неверным указателем большого объекта.

Есть идеи, почему это будет?

Ответы [ 3 ]

0 голосов
/ 24 ноября 2010

Простите, но я не могу воспроизвести его на моем 9.2.0.1.0, этот пример работает безупречно:

declare
  fOrigXml XmlType := XmlType(
'<RootNode>
  <ChildNodes>
  </ChildNodes>
</RootNode>');
   t clob;

begin
  select fOrigXml.getClobVal() into t from dual;
  dbms_lob.append(t, '4343');
  dbms_output.put_line(t);
end;
/

Не могли бы вы попробовать это и ответить, работает ли это для вас?

0 голосов
/ 24 ноября 2010

Я не уверен, поможет ли это, но вы можете сначала попытаться открыть переменную clob:

DBMS_LOB.createTemporary(lob1, cache => FALSE);
DBMS_LOB.Open(lob1, DBMS_LOB.lob_readwrite);
0 голосов
/ 23 ноября 2010

Исключение исходит из этого вызова dbms_lob.append?Предполагается, что потребуется два больших объекта, но вы передаете строковый литерал в качестве второго параметра.Возможно ли изменение неявного преобразования типов с 9i на 11g?У меня больше нет баз данных 9i, чтобы попробовать это.

...