오라클 다중 update 질문입니다. 0 2 701

by kor024 [Oracle 기초] [2018.06.25 11:03:39]


 

id name para_name seq para_value
test a p1 1 a1
test a p1 2 b1
test a p1 3 c1
test a p2 1 o9
UPDATE TestTable
   SET parm_value = '입력 값'
 where id = :id
   and name = :name
   and seq = '입력 값'
   and parm_name = '입력 값'
;

여러번 수정해야 하는 경우 for문 돌려서 입력 값만 바꿔가며 한번 씩 실행하고 있는데요.

이걸 한번에 하는 쿼리를 만들 순 없나요?

 

예를 들어서 insert 할때에는 

insert all

for문

{

    into test ( )

    values ( )

}

select * from daul

이런식으로 사용했습니다.

혹시 비슷한 방법이 있나 질문드립니다.

 

 

 

by 우리집아찌 [2018.06.25 11:09:48]

SELECT 해서 나오는 DATA라면

MERGE INTO 쓰시면 될것같아요.

 


by 마농 [2018.06.25 11:20:12]
MERGE INTO TestTable a
USING
(
SELECT 'test' id, 'a' name, 'p1' para_name, 1 seq, 'a1' para_value FROM dual
UNION ALL SELECT 'test', 'a', 'p1', 2, 'b1' FROM dual
UNION ALL SELECT 'test', 'a', 'p1', 3, 'c1' FROM dual
UNION ALL SELECT 'test', 'a', 'p2', 1, 'o9' FROM dual
) b
ON
(   a.id        = b.id       
AND a.name      = b.name     
AND a.para_name = b.para_name
AND a.seq       = b.seq      
)
WHEN MATCHED THEN
UPDATE SET a.para_value = b.para_value
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입