Sql Oracle XMLTable和Create Table As语法错误

Sql Oracle XMLTable和Create Table As语法错误,sql,oracle,plsql,xmltable,Sql,Oracle,Plsql,Xmltable,我试图从XMLTable类型将表创建为,以便将具有逗号分隔值的列拆分为多行,但由于语法不正确而导致错误 我的陈述看起来有点像 create table XX as ( select * from yy, xmltable(('"' || replace(csv_separated_list, ',', '","') || '"')) ) 如果我运行select子查询,它将按预期工作。。。因此,它似乎与包装它的CREATETABLE as语句有关。从伪XM

我试图从XMLTable类型
将表创建为
,以便将具有逗号分隔值的列拆分为多行,但由于语法不正确而导致错误

我的陈述看起来有点像

create table XX as (
select * from yy, xmltable(('"' || replace(csv_separated_list, ',', '","') || '"'))
)

如果我运行select子查询,它将按预期工作。。。因此,它似乎与包装它的CREATETABLE as语句有关。

从伪XML中提取的值不是字符串,尽管您的客户端可能会将其显示为字符串。
dump()
函数将其报告为类型58。存在从该类型到表列所允许的XMLType数据类型的隐式转换;这会引发XML处理错误,因为该值本身不是有效的XML

您可以将其强制转换为字符串类型:

create table XX as
select yy.*, cast(x.column_value as varchar2(30)) as value
from yy
cross join xmltable(('"' || replace(csv_separated_list, ',', '","') || '"')) x
或在xmltable中指定数据类型:

create table XX as
select yy.*, x.value
from yy
cross join xmltable(('"' || replace(csv_separated_list, ',', '","') || '"')
  columns value varchar2(30) path '.') x

请分享出错的全部陈述以及您收到的全部错误信息。