mysql procedure 관련 문의드립니다.
A,B,C 라는 테이블이 있습니다
1. A테이블의 데이터를 조건에 맞게 가져온뒤(여러개의 Row) 가져온 데이터의 key를 기준으로 B 테이블을 업데이트합니다.
2. A테이블에서 가져온 데이터들은 가져와서 업데이트 했다는 의미로 A의 특정컬럼을 'Y' 로 업데이트합니다.
3. 마지막으로 A테이블에서 가져온 데이터들을 C라는 테이블에 insert 하고 싶습니다.
이 3가지 조건을 만족시키기 위해 프로시져를 활용할까 하는데, 프로시져를 어떻게 구현해야 하는지 조언 부탁드려 봅니다.
cursor 도 이용해야 하고 loop도 이용해야 한다고 하는데, 이해가 잘 되지 않습니다.
일단 select 해온뒤 insert 하는 구문을 만들어봤는데, 실제로 업데이트는 되지가 않습니다. 어디 부분이 잘못된건지 모르겠네요..실행은 정상적으로 되었다고 하는데..
도움 부탁드립니다.
DELIMITER $$
DROP PROCEDURE IF EXISTS `vcs`.`sp_mes_warehousing_info` $$
CREATE PROCEDURE `vcs`.`sp_mes_warehousing_info`( IN r_roder_status VARCHAR(32),IN r_lgort VARCHAR(32), IN r_cs_use_yn VARCHAR(32) )
BEGIN
DECLARE m_rma_no VARCHAR(32);
-- DECLARE m_필드값2 VARCHAR(32);
-- DECLARE m_
DECLARE m_Done INT DEFAULT 0;
/* 여기에 커서를 정의 합니다. */
DECLARE m_Cursor CURSOR FOR
SELECT zcsreq
FROM vmes.raw_vendor_result
WHERE rorder_status = r_roder_status AND lgort = r_lgort AND cs_use_yn = r_cs_use_yn;
/* 데이터가 없으면 m_Done에 1 */
DECLARE CONTINUE HANDLER FOR NOT FOUND SET m_Done=1;
OPEN m_Cursor;
/* 반복합니다. */
REPEAT
/* 반환된 필드값을 변수에 담습니다. */
FETCH NEXT FROM m_Cursor INTO m_rma_no;
IF NOT m_Done THEN
/* 수행할 쿼리리 여기에 작성합니다. */
-- INSERT INTO 테이블2( 필드명1, 필드명2 ) VALUES( m_필드값1, m_필드값2 );
UPDATE vcs.cs_csr SET csr_status = '44' WHERE csr_no = (select csr_no from cs_rma where rma_no = m_rma_no);
END IF;
/* m_Done이 1이 될때까지 반복 합니다. */
UNTIL m_Done END REPEAT;
CLOSE m_Cursor;
END $$
DELIMITER ;