INSERT 의 예
INSERT INTO TB_TABLE1
(COL1, COL2, COL3)
VALUES
('A', 'B', (SELECT NVL(MAX(A.COL10), 0) FROM TB_TABLE2 A) + 1 )
위에 보다시피 INSERT 항목 중 1개의 값을 SUB QUERY로 MAX값을 물고 온 다음에 NVL로 널 체크하고
+ 1을 해주는건 됌... 다만 인서트 시에 위에 빨간색 () 이게 없으면 에라...
UPDATE 의 예
UPDATE TB_TABLE1
COL1 = 'A',
COL2 = 'B',
COL3 = (SELECT NVL(MAX(A.COL10), 0) FROM TB_TABLE2 A) + 1
WHERE ...
당연히 INSERT에 사용되었던 SUB QUERY를 그대로 썼는데 UPDATE 할때는 에러가 뜸...
ORA-00933 : SQL command not properly ended
저게 무슨 에러냐면... 문장의 끝이 잘못 맺어졌다 대충 그런 뜻인데,
보통은 괄호를 열고 괄호를 제대로 안닫았거나, C 문법으로 치면 ; 세미콜론 빠뜨리거나 뭐 그런거인데
이유는 모르겠지만, 그리고 원래 저런거겠지만, 나중에 또 까먹을까봐...
(SELECT NVL(MAX(A.COL10), 0) + 1 FROM TB_TABLE2 A)
똑같은 UPDATE 그냥 저렇게 +1 해서 해결했음... 진작에 저렇게 하면 되는거긴 한데
암튼 UPDATE에 SUB QUERY 사용할 때 괄호 잘 확인해야 한다는거...
까먹지 맙시다.
'Sql' 카테고리의 다른 글
ora-00907 : missing right parenthesis (0) | 2012.09.13 |
---|---|
쿼리에서 간단한 FUNCTION 사용에 대한 튜닝 관점 (0) | 2012.09.06 |
Oracle 11g 데이터베이스 만들어보자... (0) | 2012.08.26 |
Oracle 11g 깔아보자(2) 윈도우7 64비트에 깔자... (0) | 2012.08.26 |
Oracle 11g 깔아보자(1) Oracle 무엇을 받을 것인가? (0) | 2012.08.26 |