FireBird Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
파이어버드 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
IBPhoenix
FireBird Main site
볼랜드포럼 광고 모집

FireBird Q&A
[2799] Re:PROCEDURE 를 이용한 일괄 업데이트 문제...
까막.윤창희 [ggamagui] 2282 읽음    2008-04-22 11:28
전성욱 님이 쓰신 글 :
: procedure 질문입니다.
:
: TESTTABLE
:
: TID       TNUM
: -----     -------
: 1            20
: 2            30
: 3            10
: 4            -10
: ---------------
: TID 2번 이상의 TNUM 값을 각각 20씩 증가 시키고 싶습니다.
: 결과
: TID       TNUM
: -----     -------
: 1            20 --(변경없음)
: 2            50 --(20증가)
: 3            30 --(20증가)
: 4            10 --(20증가)
: ---------------
: 이렇게 하고 싶어습니다.
:
: 아래 PROCEDURE 를 만들어서 실행하면 될것 같은데 처음 T_ID 값 하나만 업데이트 되고 맙니다.
:
: SET TERM !!;
: CREATE PROCEDURE UPDATE_TESTTABLE
:     (T_NO INTEGER,T_INC INTEGER)
:     AS
:         DECLARE VARIABLE NUM INTEGER;
:     BEGIN
:         FOR
:             SELECT TID FROM TESTTABLE WHERE TID >=:T_NO INTO :NUM
:         DO
:         BEGIN
:             UPDATE TESTTABLE SET TNUM=TNUM+:T_INC  WHERE TID=:NUM;
:             SUSPEND;
:         END
:     END !!
: SET TERM ;!!
:
: 이런씩의 UPDATE 방법이 유효한지 알고 싶습니다.
:
: 좀 도와 주세요...
:
: 초보자 올림...

안녕하세요. 까막입니다.

SUSPEND 를 for 루프 밖으로 빼세요.
CREATE PROCE....
AS
BEGIN
  FOR
        SELECT .... FROM....
  DO
  BEGIN
         UPDATE  ....
  END

  SUSPEND;
END

이렇게 하시면 됩니다.



위대한 단군혼이 살아있는 나라.... 대한민국.

+ -

관련 글 리스트
2796 PROCEDURE 를 이용한 일괄 업데이트 문제... 전성욱 2172 2008/04/18
2799     Re:PROCEDURE 를 이용한 일괄 업데이트 문제... 까막.윤창희 2282 2008/04/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.