if 문~부탁드려요~ 0 4 1,305

by 현씨 [PL/SQL] [2012.02.23 14:52:58]



begin
  if :as_part_order.eb_qty > '0' then
  EB_SAVE;
end if;
  if
  :as_part_order.ed_qty > '0' then
  ED_SAVE;
end if;
  if
  :as_part_order.ee_qty > '0' then
  EE_SAVE;
end if;
  if
  :as_part_order.ef_qty > '0' then
  EF_SAVE;
end if;
  if
  :as_part_order.eg_qty > '0' then
  EG_SAVE;
end if;
  if
  :as_part_order.eh_qty > '0' then
  EH_SAVE; 
end if;
  if
  :as_part_order.ej_qty > '0' then
  EJ_SAVE;
  end if;

 exception when others then
  lm_show_alert1('note','오류1',sqlerrm);
  return;
 end; 



위에 소스는 if문마다 그값이 0보다 크면 각각 그것을 저장하는 문 이어욧~
각 값마다 0보다 큰숫자가 입력만 되면
테이블에 중복으로 저장 하도록 되었는데

프로그램 개발중인데 테스트 해보면 0보다 큰것이 2개 이상되면 저장되는것은
둘중 앞쪽에 있는 것만 저장이 되어요~

혹시 loop문으로 돌려야 되는것인지..
잘 모르겠어요~

loop문이라면 어떻게 해야 하는지 예시좀 보여주셨으면 ㅜㅜ감사합니다.

by 현씨 [2012.02.23 14:53:47]
elsif문도 써보고 해봤는데도 잘 되지 않아요~ㅜㅜ

by 부쉬맨 [2012.02.23 15:18:36]
save의 procedure 를 모르니 확인을 할수는없겠지만.
트랜잭션 처리문제인거같기도하네요.
procedure 안에 commit이나 rollback 작업이 건건히 처리가하는지확인하시고요.
한번에 돌리지말고
건건히 돌려보시면서 에러를 찾아보시는게..

아마도 내장함수는 내장함수쪽에서 out쪽으로 빼주지않으면
저 exception절에 처리한 오류를 보지못합니다.

by 현씨 [2012.02.23 15:37:56]
EB_save, ~EJ_SAVE 까지 각각 프로시저에 commit을 안넣고 저위에 구문이 있는

저장 프로시저에 한번에 커밋을 했거든요~

그래서 기대에 차서 각각의 프로시저에 commit을 추가 시켜주었는데도

저장은 한개밖에 안되요 ㅡㅜ


각각 숫자를 한개만 넣으면 각각은 저장이 되는데

여러군데 숫자를 넣어서 한꺼번에 저장시키면 안되요. 그중에 첫번째로 있는것만
저장이 되구요 ㅡㅡ

by 마농 [2012.02.23 16:43:09]
각 프로시져에서의 예외처리는 어떻게 하셨나요?
동일 키로 입력하려고 해서 두번째 부터는 에러가 나지 않았을까요?
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입