|
MYSQL 을 처음 접해 보다 보니.. 막히는게 너무나 많네요..
재고 관리 프로그램을 짜고 있는데요..
막히는 부분이 while 루프 쪽입니다.
어떤 제품이 출고 되었을 경우 재고 테이블의 재고량 업데이트를 위한 프로시져 입니다.
동일 재고 레코드가 하나인 경우는 문제가 되지 않지만.. 재고 테이블의 재고 품목이 발주 순번 별로
들어가 있어서 동일 품목이지만 재고 레코드가 1개 이상일 경우가 있게 됩니다.
일단 품목으로 레코드를 찾은 다음 레코드 갯수를 저장하고 while 루프 안에서
찾은 결과 레코드를 순차적으로 누적 재고량을 업데이트 해주고 싶습니다.
그래서 아래와 같이 while루프를 구성하였는데...
실행해보니 AcumStCnt_ea 값이 모두 동일한 값으로 들어가버리네요..
그냥 빌더상에서 해버리면 Next() 로 레코드 옮겨 가며 현재 재고량 저장하면서
차감된 만큼 누적 재고량 저장 해버리면 되던데...
프로시져 안에서 자동으로 하게 할려고 하니 잘 안되네요..
while문 쪽을 어떻게 수정해야 할까요..
고수님들의 조언 부탁드립니다.
감사합니다.
DELIMITER $$
create Procedure StkTbUseProc (OdNo INT, PSN char(10), Cnt INT)
-- READS SQL DATA
BEGIN
DECLARE SUMCnt INT;
DECLARE SUMCnt2 INT;
DECLARE USG DOUBLE;
DECLARE USG2 DOUBLE;
DECLARE RecCnt INT;
DECLARE i INT DEFAULT 1;
Select StCnt_ea-Cnt from stacktb where OrderNo = OdNo and PSName = PSN and StCnt_ea >0 into SUMCnt;
Select CalUSG(SUMCnt, PSN) into USG;
-- 출고 량 재고 해당 발주 순번 재고량에 반영
Update stacktb SET StCnt_ea = SUMCnt, StCnt_usg = USG, AcumStCnt_ea = SUMCnt, AcumStCnt_usg = USG wher e OrderNo = OdNo and PSName = PSN;
Select count(*) into RecCnt from stacktb where PSName = PSN;
// 관련 재고 레코드 갯수 찾아서 각 레코드 순차적으로 결과 업데이트
while i <= RecCnt DO
Select StCnt_ea+SUMCnt into SUMCnt from stacktb limit i, 1;
Select CalUSG(SUMCnt, PSN) into USG;
Update stacktb set AcumStCnt_ea = SumCnt, AcumStCnt_usg = USG;
SET i = i+1;
END WHILE;
// 관련 재고 레코드 갯수 찾아서 각 레코드 순차적으로 결과 업데이트
END$$
DELIMITER ;
|