숫자형 질문이여.. 0 10 3,834

by 초슈꽃 [2013.12.23 15:20:41]


V_CNT1     NUMBER;   -- 변수 설정
 


SELECT   IPL.LAYER_SEQ
INTO   V_LAYER_SEQ
   FROM   IF_PLM2ERP_LSA IPL
 WHERE  IPL.REC_NO = V_CNT1

이렇게 하면
expression is of wrong type 이라고 에러가 나는군요
IPL.REC_NO 이것도 넘버형이고
V_CNT1도 넘버형입니다.
어떻게 변환해서 쓸수있는 법 없을까요?
by 용근님 [2013.12.23 15:22:53]
이녀석은요 V_LAYER_SEQ

by 초슈꽃 [2013.12.23 15:24:13]
아~ 그녀석도 넘버형입니다

by 용근님 [2013.12.23 15:32:02]
진짜 저기서 에러가 나는것이 확실한가요? 전체 프로시져 보지 않는 이상 모르겠는데요

by 초슈꽃 [2013.12.23 15:40:48]
where 절에 PLS-00382: expression is of wrong type 이라고 에러가 나네요
자료는 너무방대해서 올리기엔 좀 뭣한감이 있네요 ^^; 신경 써주셔서 고맙습니다

by 용근님 [2013.12.23 15:45:49]
혹시 세미콜론을 안넣으신건..

by 초슈꽃 [2013.12.23 15:49:36]

V_CNT1     NUMBER;   -- 변수 설정

 FOR V_CNT1 IN ( SELECT T.REC_NO
   FROM IF_PLM2ERP_LSA T
  WHERE T.PARENT_ID    = P_OBJ_ID ) LOOP
 

 
 SELECT IPL.LAYER_NO
   INTO V_LAYER_NO
   FROM IF_PLM2ERP_LSA IPL
  WHERE IPL.REC_NO = V_CNT1

  ;
 
 SELECT IPL.LAYER_SEQ
   INTO V_LAYER_SEQ
   FROM IF_PLM2ERP_LSA IPL
  WHERE IPL.REC_NO = V_CNT1
  ;
이런식으로 돌리는건데 포문을 제가 잘못 넣은건가요? ㅋ;;


by 용근님 [2013.12.23 15:54:35]
 


FOR v_sql IN ( SELECT T.REC_NO
         FROM IF_PLM2ERP_LSA T
         WHERE T.PARENT_ID = P_OBJ_ID 
       ) 
LOOP
 
 
  SELECT IPL.LAYER_NO
   INTO V_LAYER_NO
   FROM IF_PLM2ERP_LSA IPL
  WHERE IPL.REC_NO	 = v_sql.rec_no
  ;
  
  SELECT IPL.LAYER_SEQ
   INTO V_LAYER_SEQ
   FROM IF_PLM2ERP_LSA IPL
  WHERE IPL.REC_NO	 = v_sql.rec_no
  ;
  
END LOOP
이런식이 되겠지요

by 초슈꽃 [2013.12.23 16:03:29]
음 정말 고맙습니다 ^^

by Oracler [2013.12.23 18:31:33]
FOR 문의 v_cnt는 for문 내에서 자동적으로 선언되는 record 형 변수입니다. 변수 scope 규칙에 의해 넘버형 변수가 가려집니다. 따라서 넘버형과 레코드형이 비교되는 것이므로 wrong type 에러가 발생한 것입니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입