니댜리나
326
2017-06-19 11:22:25
3
2741

ORA-01427: 단일 행 하위 질의에 2개 이상의 행이 리턴되었습니다. 라는 오류가 뜹니다;;



UPDATE table1 A
SET ONHAND_QUANTITY = ONHAND_QUANTITY-(
  SELECT REQUEST_QUANTITY
	FROM table2
	WHERE 
          FROM_LOCATOR = A.LOCATOR
	  and INF_FLAG = '0'
          and SOURCE_SUBINVENTORY = '130')
WHERE SUBINVENTORY_CODE = '130'
  AND LOCATOR in (
    SELECT FROM_LOCATOR 
    FROM table2
      inner join table1
      on  table2.FROM_LOCATOR = table1.locator
      WHERE  table2.INF_FLAG = '0' ); 

코드는 이렇게 했구요.

테스트로 업데이트 할 값이 1개일 경우엔 정상 작동 했습니다ㅠ

그런데 값을 두개를 주니 

ORA-01427: 단일 행 하위 질의에 2개 이상의 행이 리턴되었습니다. 

이런 오류가 뜨네요 ;;

배열로 따로 만들어 줘야 하나요? 어떻게 해야 하나요?;;; 고수님들 의견 부탁드립니다 ㅠ






0
  • 답변 3

  • jaren
    34
    2017-06-19 11:26:45
    (
      SELECT REQUEST_QUANTITY
    	FROM table2
    	WHERE 
              FROM_LOCATOR = A.LOCATOR
    	  and INF_FLAG = '0'
              and SOURCE_SUBINVENTORY = '130')
    위 부분이 문제인건데 2개 row값을 다 빼야하면 SUM(REQUEST_QUANTITY) 
    2행 있는게 문제라면 문제를 해결해야 하구요
    첫행만 빼야하면 where 절에 rownum = 1 을 추가하구요 
  • 아항항하잏이
    77
    2017-06-19 11:27:56

     오류 원인은

    SET ONHAND_QUANTITY = ONHAND_QUANTITY-(
      SELECT REQUEST_QUANTITY
    FROM table2
    WHERE
              FROM_LOCATOR = A.LOCATOR and INF_FLAG = '0'       and SOURCE_SUBINVENTORY = '130')

     

    REQUEST_QUANTITY 값을 가져올때 2개이상의 행이 발견된거네요~ 

  • 니댜리나
    326
    2017-06-19 13:14:09

    sum을 붙이니 되네요! ㅜㅠㅠ 배열을 만들어야 하나 그건 또 어떻게 하는건가 막막했는데 ㅠ

    너무 감사합니다. 

  • 로그인을 하시면 답변 을 등록할 수 있습니다.