问题描述
大家好
我试图从2个表与XML函数进行查询,但我有一些问题:
这是我在这个示例中使用的sql
从我正在使用的2个不同的表中选择
然后我去做xml
我有一个结果
ORA-00902: tipo di dati non valido
00902. 00000-“无效数据类型”
* 原因:
* 行动:
里加: 11,科隆纳: 34
除了这个错误,这是我试图检索的xml
但这是从多个选择中制作树xml的唯一方法?
谢谢
毛罗
我试图从2个表与XML函数进行查询,但我有一些问题:
这是我在这个示例中使用的sql
从我正在使用的2个不同的表中选择
select deptno,dname from dept; select empno,ename,deptno from emp;
然后我去做xml
SELECT XMLElement("Department", dept_t(deptno, edept, cast(MULTISET (SELECT empno, ename FROM emp e WHERE e.deptno = e.deptno) AS emplist_t))) AS deptxml FROM dept d WHERE d.deptno = 10;
我有一个结果
ORA-00902: tipo di dati non valido
00902. 00000-“无效数据类型”
* 原因:
* 行动:
里加: 11,科隆纳: 34
除了这个错误,这是我试图检索的xml
ACCOUNTING CLARK KING MILLER ACCOUNTING2 CLARK2 KING2 MILLER2
但这是从多个选择中制作树xml的唯一方法?
谢谢
毛罗
专家解答
我不确定为什么需要子查询?您可以将两个表连接在一起并以这种方式生成XML。
按将在部门级别出现的列分组,并将员工信息一起XMLAgg:
按将在部门级别出现的列分组,并将员工信息一起XMLAgg:
set long 10000 with depts as ( select xmlelement ( "dept_t", xmlattributes (d.deptno), xmlelement ( "emplist", xmlagg ( xmlelement ( "emp_t", xmlattributes (e.empno), xmlelement ( "ename", e.ename ) ) ) ) ) dept from scott.dept d join scott.emp e on e.deptno = d.deptno where d.deptno in (10, 20) group by d.deptno ) select xmlserialize ( --for formatting the output content xmlelement ( "department", xmlagg ( dept ) ) as varchar2(1000) indent size = 2 ) doc from depts; DOC ------------------------------------CLARK MILLER KING SMITH FORD ADAMS SCOTT JONES
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。