ORA-19100错误咨询:含XMLType的emp表操作异常排查
解决ORA-19100: PASSING或RETURNING关键字预期错误
这个错误的根源很清晰:你直接把普通字符串常量插入了XMLType类型的列,Oracle无法自动完成普通字符串到XMLType对象的隐式转换,因此触发了这个语法错误。
正确的插入方式
要解决这个问题,只需要用XMLType()函数显式地把XML字符串包装起来,明确告诉Oracle这是一个XML类型的数据。修改你的插入语句如下:
第一个插入语句修改后:
insert into emp values (XMLType('<dept bldg="101"> <employee id="901"> <name> <first>John</first> <last>Doe</last> </name> <office>344</office> <salary currency="USD">55000</salary> </employee> </dept>'));
第二个插入语句修改后(注意补全未闭合的标签):
insert into emp values (XMLType('<dept bldg="103"> <employee id="902"> <name> <first>Peter</first> <last>Smith</last> <!-- 这里要补全闭合标签,避免XML语法错误 --> </name> <!-- 补充其他字段内容 --> </employee> </dept>'));
额外注意事项
- 确保XML字符串格式合法:所有标签必须正确闭合,属性值必须用引号包裹,嵌套结构要层次清晰,否则即使使用了
XMLType(),也会触发XML语法相关的错误。 - 如果在PL/SQL块中插入,也可以先将XML字符串赋值给
XMLType变量,再插入表中,效果一致:
declare v_xml XMLType; begin v_xml := XMLType('<dept bldg="101">...</dept>'); insert into emp values (v_xml); end; /
内容的提问来源于stack exchange,提问作者Walentyna Juszkiewicz
相关产品推荐
相关产品推荐

