我尝试运行折叠查询,但是它给了我‘单行子查询返回多行’的错误。
BEGIN
FOR C2 IN
(SELECT S.bom_header,
S.sap_cage_cd,
I.part_doc_nbr AS EIS_PART_NUMBER,
I.cage_cd AS EIS_CAGE_CODE,
P.ec_revision_mfg,
(SELECT NVL (I.sap_xref_no, part_doc_nbr)
FROM eissap.tbitem i
WHERE i.item IN (SELECT comp_part
FROM eissap.tbpart_config_comp_config
WHERE item = comp_part))
AS sap_xref_no,
C.comp_config,
C.qty_per_mfg AS EIS_MFG_QTY,
NVL (c.unit_of_measure_cd, 'EA') EIS_MFG_UOM,
I.item AS EIS_ITEM
FROM TEMP_SAP_BOMS_LIST_BKP S,
EISSAP.TBITEM I,
EISSAP.TBPART_CONFIG_COMP_CONFIG C,
EISSAP.TBPART P
WHERE (S.bom_header = I.part_doc_nbr OR S.bom_header = I.sap_xref_no)
AND S.sap_cage_cd = I.cage_cd
AND I.item = C.part_item
AND I.item = P.item
AND c.config = (SELECT MAX (c1.config)
FROM EISSAP.tbpart_config_comp_config c1
WHERE c1.part_item = C.part_item))
LOOP
INSERT INTO TEMP_SAP_BOMS T
(T.bom_header
,T.sap_cage_cd
,T.EIS_PART_NUMBER
,T.EIS_CAGE_CODE
,T.ec_revision_mfg
,T.SAP_XREF_NO
,T.comp_config
,T.EIS_MFG_QTY
,T.EIS_MFG_UOM
,T.EIS_ITEM)
SELECT C2.bom_header,
C2.sap_cage_cd,
C2.EIS_PART_NUMBER,
C2.EIS_CAGE_CODE,
C2.ec_revision_mfg,
(SELECT NVL (C2.sap_xref_no, part_doc_nbr)
FROM eissap.tbitem i
WHERE I.item IN (SELECT comp_part
FROM eissap.tbpart_config_comp_config
WHERE item = comp_part))
AS sap_xref_no,
C2.comp_config,
C2.EIS_MFG_QTY,
NVL (C2.EIS_MFG_UOM, 'EA'),
C2.EIS_ITEM
FROM TEMP_SAP_BOMS_LIST_BKP S,
EISSAP.TBITEM I,
EISSAP.TBPART_CONFIG_COMP_CONFIG C,
EISSAP.TBPART P
WHERE (S.bom_header = I.part_doc_nbr OR S.bom_header = I.sap_xref_no)
AND S.sap_cage_cd = I.cage_cd
AND I.item = C.part_item
AND I.item = P.item
AND c.config = (SELECT MAX (c1.config)
FROM EISSAP.tbpart_config_comp_config c1
WHERE c1.part_item = C.part_item);
END LOOP;
END;发布于 2015-03-12 14:22:52
极有可能
,(SELECT NVL (I.sap_xref_no, part_doc_nbr)
FROM eissap.tbitem i
WHERE i.item IN (SELECT comp_part
FROM eissap.tbpart_config_comp_config
WHERE item = comp_part)) AS sap_xref_no,返回多行(与错误所述的完全相同)。在主查询的SELECT子句中使用子查询时,它必须返回最多一行。
https://dba.stackexchange.com/questions/95078
复制相似问题