전성욱 님이 쓰신 글 :
: 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
이렇게 하시면 됩니다.
위대한 단군혼이 살아있는 나라.... 대한민국.
|