오라클 프로시저 문의 0 1 1,885

by 게릴라 [Oracle 기초] 오라클 프로시저 [2016.08.19 09:55:56]


안녕하세요.

여기 강좌를 보고 프로시저를 공부 중입니다.

그런데 궁금증이 생겨서 질문드립니다.

A라는 테이블에 수십만건의 데이터를 insert 하려고 하는데...

A테이블에 1 row 삽입 시작시간부터 마지막 n row 삽입된 종료시간을

삽입이 이상없이 종료된 시점에...

B테이블(history성)에 저장을 하고 싶습니다.

즉, 프로그램에서 루프를 돌면서 수십만건의 데이터를,

A테이블에 데이터 삽입을 시작하고...

데이터 삽입이 이상없이 다 완료되면 B테이블에 데이터 삽입 시작 시간, 데이터 삽입 종료 시간을

저장하고 싶습니다.

누군가 프로시저로 만들어야 한다고 하는데...

하나의 프로시저 안에서 수십만건의 데이터를 A테이블에 넣고...

A테이블 삽입이 이상없이 다 완료되면 B테이블에 데이터 삽입시작시간, 종료시간을

삽입하는 로직을 작성할 수 있나요?

하나의 프로시저 안에서 저런게 안된다면 

단순히 A 테이블의 트랜잭션 시작 시점의 시간 및 종료 시점의 시간을 변수에 각각 저장해놓고

SP_B_HISTORY라는 프로시저를 하나 만들어 그 프로시저에 파라미터로 시작시간,종료시간 던져서

B테이블에 삽입하는 로직만 작성할 수 있는건가요?

제가 이제 막 공부하는 입장이라.... 어떤게 가장 좋은 방법인지...가능은 한건지...

감이 오질 않네요.

선배님들의 고견 부탁드립니다.

감사합니다.

by 탱 [2016.08.19 15:29:04]
CREATE OR REPLACE PROCEDURE 프로시저명
(
)
IS
    START_TIME DATE;
    END_TIME DATE;
BEGIN
    START_TIME := SYSDATE;

    * INSERT 문 수행
    * COMMIT;

    END_TIME := SYSDATE;

    * START_TIME, END_TIME INSERT 문 수행

END;
/

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입