我正在尝试解析PL SQL中的XML。但是得到以下错误
Error report:
ORA-06550: line 21, column 43:
PL/SQL: ORA-00902: invalid datatype
ORA-06550: line 17, column 1:
PL/SQL: SQL Statement ignored
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
我正在尝试运行查询
DECLARE
l_xml xmltype:= xmltype('<Table>
<Data>
<DataKey>Test</DataKey>
<DataTypeID>8</DataTypeID>
<DataValue>test1</DataValue>
<Id>eb96c9c1-6236-403d-9afa-6d45ec623dbc</Id>
</Data>
</Table>');
begin
select * FROM
xmltable ('/Table/Data' passing l_xml
columns
DataKey nvarchar2(50) path '/Data/DataKey'
,DataTypeID int, path '/Data/DataTypeID'
, DataValue nvarchar2(1024) path '/Data/DataValue');
end;
/
我是PL / SQL的新手,所以无法弄清楚错误。有人可以帮我吗? 谢谢
答案 0 :(得分:1)
int
和path
之间有一个额外的逗号:
,DataTypeID int, path '/Data/DataTypeID'
应该是
,DataTypeID int path '/Data/DataTypeID'
或者您可以使用number
代替int
。
您的select
也必须选择到中,因为这是在PL / SQL上下文中。所以现在你会得到一个PLS-00428错误。在不知道你打算如何处理结果的情况下,你应该如何纠正这一点并不完全是显而易见的 - 你是否真的不需要PL / SQL,或者你想循环结果来对它们做些什么,或者插入到另一张桌子,或......