1
select * from table connect by 产品=prior 组成产品明细 start with 产品='a'
2
需求不明确,e和f有区别吗,为什么只有f?

解决方案 »

  1.   

    CREATE OR REPLACE PROCEDURE ODR_itm_BOM(itemname in Varchar2)
    is
       nLoopCount          NUMBER(10);CURSOR cOdrBasTbl1D
      IS
        
    SELECT * FROM (
    select level,chd_itm_cd chd_itm_cd,PRT_ITM_CD
    from prd_bom_tbl start with PRT_ITM_CD =itemname connect by prior chd_itm_cd = PRT_ITM_CD)
    WHERE CHD_ITM_CD NOT IN  (
    SELECT PRT_ITM_CD FROM (
    select level,chd_itm_cd chd_itm_cd,PRT_ITM_CD
    from prd_bom_tbl start with PRT_ITM_CD =itemname connect by prior chd_itm_cd = PRT_ITM_CD ));
    OdrBasTbl1D cOdrBasTbl1D%ROWTYPE;FOR OdrBasTbl1D IN cOdrBasTbl1D
    LOOP
     nLoopCount :=1;
        FOR nLoopCount IN OdrBasTbl1D.LEVEL 
        LOOP
              SELECT OdrBasTbl1D.chd_itm_cd chd_itm_cd into test FROM (
              select level,chd_itm_cd chd_itm_cd,PRT_ITM_CD
              from prd_bom_tbl start with chd_itm_cd =OdrBasTbl1D.chd_itm_cd connect by prior PRT_ITM_CD=chd_itm_cd )
              WHERE PRT_ITM_CD NOT IN (
              SELECT chd_itm_cd FROM (
              select level,chd_itm_cd chd_itm_cd,PRT_ITM_CD
              from prd_bom_tbl start with chd_itm_cd =OdrBasTbl1D.chd_itm_cd connect by prior PRT_ITM_CD=chd_itm_cd ))
              GROUP BY OdrBasTbl1D.chd_itm_cd   HAVING   COUNT(*)=1;
              nLoopCount:=nLoopCount+1;
        END LOOP;
    END LOOP;end;
    上面的语法
    FOR OdrBasTbl1D IN cOdrBasTbl1D这行提示出错,
    pls-00103:出现符号"for"在需要下列之一时:begin function package pragma proceduresubtypetype use <an identifier>