if (select ship_qty from UW_DNGATHER where ship_no=:SHIPNO and part_no=:partno) =
 (select UW_SHIP_LINES.SHIP_QTY 
 FROM UW_SHIP,UW_SHIP_LINES 
 WHERE UW_SHIP.SHIP_KEY=UW_SHIP_LINES.SHIP_KEY  AND  UW_SHIP.SHIP_NO=:SHIPNO and part_no=:partno)  then
 select * from UW_ship
 end if这条语句错误。我该怎么写啊

解决方案 »

  1.   


    /试一下:select a.*
      from UW_ship a,
           (select ship_qty tt
              from UW_DNGATHER
             where ship_no = :SHIPNO
               and part_no = :partno) t1,
           (select b.SHIP_QTY tt
              FROM UW_SHIP a, UW_SHIP_LINES b
             WHERE a.SHIP_KEY = b.SHIP_KEY
               AND a.SHIP_NO = :SHIPNO
               and part_no = :partno) t2
     where t1.tt = t2.tt;
      

  2.   

    ...
    DECLARE
      DIFF_QTY NUMBER;
      REF_CUR SYS_REFCURSOR;
      ...
    BEGIN
    ...
    SELECT UW_SHIP_LINES.SHIP_QTY - UW_DNGATHER.SHIP_QTY
           INTO DIFF_QTY
      FROM UW_DNGATHER,
           UW_SHIP_LINES
     WHERE EXISTS (SELECT 1
                     FROM UW_SHIP
                    WHERE UW_SHIP.SHIP_KEY=UW_SHIP_LINES.SHIP_KEY
                      AND UW_DNGATHER.SHIP_NO = UW_SHIP.SHIP_NO
                      AND UW_SHIP.SHIP_NO = :SHIPNO)
       AND UW_DNGATHER.PART_NO = UW_SHIP_LINES.PART_NO
       AND UW_DNGATHER.PART_NO = :PARTNO;
       
    IF DIFF_QTY = 0 THEN
      OPEN REF_CUR FOR SELECT * FROM UW_SHIP;
    END IF;
    ...
    END;