ORA-01733: virtual column not allowed here 대처방안에 문의드립니다. 0 1 12,757

by 짱구 [SQL Query] HINT ORA-01733 bypass_ujvc [2012.07.23 13:49:30]


Update 할려하는데. 가상 컬럼에는 허용하지 않는다는....ORA-01733 error가 발생하네요.
어떻게 수정하는게 올바른건지요.. 봐주셨으면 합니다.

제가 실행한 쿼리는 아래와 같습니다.

감사합니다.

UPDATE /*+ bypass_ujvc */
(SELECT T1.ID
     , T1.NM
FROM (SELECT DISTINCT AA.ID
   , AA.NM
    , COUNT(1) OVER(PARTITION BY BB.ID, BB.SEQ1, BB.SEQ2, BB.SEQ3) CNT
   FROM AA
       , BB
   , (SELECT ID
     , SEQ1
, SEQ2
 , SEQ3
 , SEQ4
 FROM BB
  WHERE ID = 111) CC
WHERE AA.ID = CC.ID
AND AA.SEQ1 = CC.SEQ1
AND AA.SEQ2 = CC.SEQ2 
AND AA.SEQ3 = CC.SEQ3 
AND BB.ID = CC.ID
AND BB.SEQ1 = CC.SEQ1
AND BB.SEQ2 = CC.SEQ2 
AND BB.SEQ3 = CC.SEQ3) T1
  WHERE T1.CNT <= 1)
   SET NM= 'TEST';
by 짱구 [2012.07.23 14:19:35]

죄송합니다.

이전 글을 참조 하고 해결해보록 해봤어야 하는데..

마음만 급해서 써놓고 이전글들을 확인했네요..

제 경우에는 해결 방법이 있더군요.
---------------------------------
http://www.gurubee.net/article/45668 글의 마농님 답변중..
 : 테이블에 대한 가공 없이 뷰를 만든다면 뷰테이블을 통해 원본 테이블을 조작할 수 있습니다.

에 힌트를 얻어 해결했습니다.
---------------------------------

쿼리 내용은..

UPDATE /*+ bypass_ujvc */
 (SELECT AA.ID
,
AA.NM

FROM ( SELECT BB.ID
    ,
BB.SEQ1
    ,
BB.SEQ2
,
BB.SEQ3

, COUNT(1) OVER(PARTITION BY BB.ID, BB.SEQ1, BB.SEQ2, BB.SEQ3) CNT
   FROM BB
   , (SELECT ID
 , SEQ1
, SEQ2
 , SEQ3
, SEQ4
FROM BB 
  WHERE ID = 111) CC
    WHERE BB.ID = CC.ID
  AND BB.SEQ1 = CC.SEQ1
  AND BB.SEQ2 = CC.SEQ2
  AND BB.SEQ3 = CC.SEQ3)  T1
   , AA
WHERE AA.ID = T1.ID
  AND AA.SEQ1 = T1.SEQ1
  AND AA.SEQ2 = T1.SEQ2
  AND AA.SEQ3 = T1.SEQ3
  AND T1.CNT <= 1)
 SET NM= 'TEST';
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입