database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 39595 게시물 읽기
No. 39595
프로시저 전체 트랜잭션 성공시만 커밋
작성자
김선미(운동화)
작성일
2012-08-14 17:07
조회수
8,545

하나의 프로시저 안에서 INSERT / DELETE / UPDATE는 50번 가량 발생을 하구요

순차적으로 트랜잭션을 수행할 때,

하나라도 에러가 나면 프로시저의 전체 구문을 롤백,

마지막 문장까지 모두 성공할 시에만 커밋을 하고 싶어요.

어떻게 하면 되나요?

PL/SQL 초보라 잘 모르겠어요.ㅜㅜ

이 글에 대한 댓글이 총 2건 있습니다.

-- ora error 발생시 rollback

create or replace  procedure sp_name 

begin

   

  insert ..

  update ..

  delete ..

    

  commit;

  

  exception 

  when others then 

  rollback;

  

end;

 

 

-- insert,update,delete 처리 건수가 없다면   

create or replace procedure sp_name 

 

procedure lp_check(v_rtn number)

begin

if v_rtn =0 then

raise not_effect;

end if;

end;

 

begin

   

  insert .. 

  lp_check( nvl(sql%rowcount,0));

   

  update ..

  lp_check( nvl(sql%rowcount,0));

  

  delete ..

  lp_check( nvl(sql%rowcount,0));

    

  commit;

  

  exception 

    when not_effect then

    DBMS_OUTPUT.PUT_LINE('Not_Effect');

    rollback;

    

  when others then 

  rollback;

 

end;

tohappy(tohappy)님이 2012-08-14 18:31에 작성한 댓글입니다.
이 댓글은 2012-08-14 18:32에 마지막으로 수정되었습니다.

감사합니다!! 한 번 해볼게요!

김선미(운동화)님이 2012-08-23 19:37에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
39599연속 데이타의 구분별 시작과 끝 구하기 [2]
윤근환
2012-08-22
4051
39598SGA의 용량이 부족하게될경우 어떻게 되는지 알고 싶습니다. [2]
임종균
2012-08-21
5366
39597[질문]데이터 없으면 0넣어서 레코드 생성 [1]
샤방
2012-08-21
4405
39595프로시저 전체 트랜잭션 성공시만 커밋 [2]
김선미
2012-08-14
8545
39594세로일부분만 가로로뽑기 [2]
질문
2012-08-14
5442
39593리눅스에서 오라클 디비 접속 [1]
구은호
2012-08-14
4028
39592스케쥴 쿼리작성 문의 [3]
정용석
2012-08-14
4774
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다