Sql Oracle XMLTable和Create Table As语法错误
我试图从XMLTable类型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
将表创建为,以便将具有逗号分隔值的列拆分为多行,但由于语法不正确而导致错误
我的陈述看起来有点像
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
请分享出错的全部陈述以及您收到的全部错误信息。