PL / SQL比较XMLTypes

时间:2020-02-21 19:33:17

标签: xml oracle plsql

我有一个正在使用的SQL表,就像队列一样,其中一列是XMLType。我要对表进行的操作是创建一个程序以提取数据的特定部分,遍历表,读取信息,然后在完成后删除该行。完成后,我不能只擦除整个表,因为并非所有数据都需要删除。

我当前的解决方案:

   FOR xml_data FROM (SELECT xml_column from table_a) 
   LOOP
   -- Process the data
   ...

   --- Delete the row
   DELETE FROM table_a where xml_column = xml_data.xml_column;
   END LOOP;

但是,我在删除部分遇到了一个问题,引发了错误:

  Error report -
  ORA-22950: cannot ORDER objects with MAP or ORDER method
  ...
  Action: Define a MAP or ORDER method for the object type

有人知道解决方案是什么吗?我也欢迎其他解决方案在迭代后删除行。

编辑:修复代码

1 个答案:

答案 0 :(得分:3)

不能轻易将大型或复杂对象与等号进行比较。 Oracle试图在这里拯救您,因为比较大型对象可能会导致性能问题,并且有多种比较XML的方法。错误消息.bind告诉您,如果您构建了特定的比较功能,则可以比较对象。

但是在这种情况下,不需要直接比较XML。如果要遍历表中的行,则通过var ftp_list = promisify(c.list.bind(c)) (这是指向行位置的物理指针)识别行的速度要快得多。

ORA-22950
相关问题