【发布时间】:2019-02-23 13:54:24
【问题描述】:
我在执行以下查询时收到 oracle ORA-00913: too many values 错误。
SELECT qst.QUE_NAME,
(SELECT sec2.SECTION_NAME AS "sectionName",
sec2.SECTION_ID_PK AS "sectionId",
sec2.SECTION_SEQUENCE AS "sequence",
CASE(sec2.ENABLE_SCORING)
WHEN '1'
THEN 'true'
ELSE 'false'
END AS "hasScore",
sec2.SECTION_WEIGHTAGE,
sec2.SEC_TOTAL_SCR_WEIGHTAGE,
sec2.SECTION_TYPE
FROM MS_XRQ_SECTION sec2
WHERE sec2.section_category=2
AND sec2.SECTION_QUESTNR_FK=qst.INTERNAL_QUESTNR_ID
)
FROM MS_XRQ_QUESTIONNAIRE qst
WHERE qst.INTERNAL_QUESTNR_ID= 'Questionnaire-3032';
当我使用硬编码值'Questionnaire-3032' 运行第二个选择语句(在括号内)时,它返回正确的结果。
当我运行以下查询时,它也返回 1 条记录。
SELECT qst.QUE_NAME FROM MS_XRQ_QUESTIONNAIRE qst WHERE qst.INTERNAL_QUESTNR_ID= 'Questionnaire-3032';
所以这两个独立的查询运行良好。但是当我想将他们的结果合并为一个时,我得到了这个错误。我无法理解我在这里做错了什么!谁能告诉我为什么会这样?
我还想将此查询传递给dbms_xmlgen.getxmltype() 函数以获得类似于以下内容的输出。
<question>
<name> Q1</name>
<sections>
<section> s1</section>
<section> s2</section>
</sections>
<questions>
【问题讨论】:
-
您的子查询(从第 2 行开始)返回不止一行
-
正确!但是我如何调整这个查询以获得我想要的格式的 xml 输出?如果我进行正常连接并将其传递给 xml 转换函数,那么我的问题名称将嵌入到每个部分节点中。示例操作如下。
Questionnaire-3030 Section 4 SECTION-103315 3 false .......