XML批量插入Oracle表

征服者阿拉维斯

我是oracle的新手,我正在尝试的是什么,我有一个xml,我尝试将其插入到oracle数据库表中,当我尝试将其插入时,就形成了查询。我得到一些错误

错误报告-ORA-06550:第35行,第84列:PL / SQL:ORA-00933:SQL命令未正确结束ORA-06550:第5行,第2列:PL / SQL:SQL语句被忽略06550。00000-“第%行s,列%s:\ n%s“ *原因:通常是PL / SQL编译错误。*行动:

我无法弄清楚我错过了什么,建议我如何更改查询,

这是我试图工作的XML和Query继承人。

- <call>
- <callSummary>
  <indId>100</indId> 
  <notificationNo>notification</notificationNo> 
  <orderNo>orderno</orderNo> 
  </callSummary>
- <callList>
- <callDetails>
  <maintenancetype>1</maintenancetype> 
  <serialNo>1</serialNo> 
  <unitType>unit type</unitType> 
  </callDetails>
- <callDetails>
  <maintenancetype>1</maintenancetype> 
  <serialNo>2</serialNo> 
  <unitType>unit type</unitType> 
  </callDetails>
- <callDetails>
  <maintenancetype>2</maintenancetype> 
  <serialNo>1</serialNo> 
  <unitType>unit type</unitType>
  </callDetails>
- <callDetails>
  <maintenancetype>2</maintenancetype> 
  <serialNo>2</serialNo> 
  <unitType>unit type</unitType> 
  </callDetails>
  </callList>
  </call>

我的查询是

DECLARE  
 call_xml XMLTYPE := xmltype('<call><callSummary><indId>100</indId><notificationNo>notification</notificationNo><orderNo>orderno</orderNo><</callSummary><callList><callDetails><maintenancetype>1</maintenancetype><serialNo>1</serialNo><unitType>unit type</unitType></callDetails><callDetails><maintenancetype>1</maintenancetype><serialNo>2</serialNo><unitType>unit type</unitType></callDetails><callDetails><maintenancetype>2</maintenancetype><serialNo>1</serialNo><unitType>unit type</unitType></callDetails><callDetails><maintenancetype>2</maintenancetype><serialNo>2</serialNo><unitType>unit type</unitType></callDetails></callList></call>');
 
 BEGIN
 INSERT INTO ORDER_DETAILS (
		 IND_ID,NOTIFICATION_NO,ORDER_NO,MAINT_TYPE,SERIAL_NO,UNIT_TYPE)
  SELECT 
  call_xml.value('call/callSummary/indId[1]','CLNT(3)'),
  call_xml.value('call/callSummary/notificationNo[1]','CHAR(12)'),
  call_xml.value('call/callSummary/orderNo[1]','CHAR(12)'),
  call_xml.value('call/callSummary/callList/callDetails/maintenancetype[1]','CHAR(1)'),
  call_xml.value('call/callSummary/callList/callDetails/serialNo[1]','CHAR(1)'),
  call_xml.value('call/callSummary/callList/callDetails/unitType[1]','CHAR(20)') from call_xml.nodes('call');
  
  END;

希望您提前理解我的问题,Thanx。

缺口

您将要使用xmlsequence函数。它将允许您从XML对象中选择节点列表。如果您想使用pl / sql,请使用变量替换xmltype。

      SELECT 
  extractValue(column_value,'callSummary/indId[1]'),
  extractValue(column_value,'callSummary/notificationNo[1]'),
  extractValue(column_value,'callSummary/orderNo[1]'),
  extractValue(column_value,'callSummary/callList/callDetails/maintenancetype[1]'),
  extractValue(column_value,'callSummary/callList/callDetails/serialNo[1]'),
  extractValue(column_value,'callSummary/callList/callDetails/unitType[1]') from table (
       xmlsequence(
         extract(
           xmltype('<call><callSummary><indId>100</indId><notificationNo>notification</notificationNo><orderNo>orderno</orderNo></callSummary><callList><callDetails><maintenancetype>1</maintenancetype><serialNo>1</serialNo><unitType>unit type</unitType></callDetails><callDetails><maintenancetype>1</maintenancetype><serialNo>2</serialNo><unitType>unit type</unitType></callDetails><callDetails><maintenancetype>2</maintenancetype><serialNo>1</serialNo><unitType>unit type</unitType></callDetails><callDetails><maintenancetype>2</maintenancetype><serialNo>2</serialNo><unitType>unit type</unitType></callDetails></callList></call>'),'/call/callSummary')));

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用 Oracle 批量插入

来自分类Dev

使用批量插入在oracle中的表之间移动大数据

来自分类Dev

在oracle中批量插入时,表名称无效

来自分类Dev

Oracle将数据插入XML类型表

来自分类Dev

MySQL批量插入多个表

来自分类Dev

从python批量插入postgres表

来自分类Dev

Rails批量插入多个表

来自分类Dev

使用外键批量插入嵌套的xml作为第一个表的标识列

来自分类Dev

oracle如何估计批量插入所需的空间

来自分类Dev

如何在Oracle中批量插入

来自分类Dev

Oracle PL/SQL 中的批量插入

来自分类Dev

在 Oracle 中使用 FORALL 进行批量插入

来自分类Dev

SQLite批量插入到多个表

来自分类Dev

批量插入期间的SQL Server表锁定

来自分类Dev

Oracle:插入表类型

来自分类Dev

无法插入 Oracle 表

来自分类Dev

批量插入

来自分类Dev

将XML批量导入现有表

来自分类Dev

oracle表插入事务日志

来自分类Dev

Oracle从表中插入查询

来自分类Dev

MyBatis适用于Oracle的批量插入/更新

来自分类Dev

Oracle-如何知道批量插入已结束?

来自分类Dev

Oracle数据库提示从DBLink进行批量插入

来自分类Dev

使用Anorm批量插入具有很多列的表

来自分类Dev

从文本文件批量插入到临时表中

来自分类Dev

具有目标表标识列的批量插入

来自分类Dev

MySQL-从选择查询的结果批量插入表

来自分类Dev

使用文本文件批量插入创建表

来自分类Dev

使用ODBC连接从DataTable批量插入SQL Server表