2013-10-29 1 views
3

각 스크립트에는 자체 커밋 문이 포함되어 있으며 10 개의 스크립트가 있습니다. 데이터베이스 연결을 요청하고 스크립트를 읽고 데이터베이스에서 실행하는 도구를 사용하여 모든 스크립트를 동시에 실행합니다.모든 스크립트가 실행될 때까지 oracle에서 commit statment를 보류하는 방법

모든 스크립트에서 모든 커밋 문을 유지해야하며 모든 스크립트 문에서 오류가 발생하면 이전의 모든 문을 롤백해야합니다.

답변

6

단순히 당신이 문을 커밋 삭제 .. 및

SET AUTOCOMMIT OFF; 
WHENEVER SQLERROR EXIT FAILURE ROLLBACK; 

{script 1} 
{script 2} 
{script 3} 
{script 4} 
. 
. 
. 
{script 10} 

COMMIT; 

DDL 암시 적 성공에 최선을 다하고됩니다. 우리는 DDL에 대한 커밋을 발행하지 않습니다. 수동 롤백을 사용하려면 On 실패 스크립트가 있어야합니다. 예를 들어

: 두 개의 테이블을 생성 후 롤백

WHENEVER SQLERROR CONTINUE; 
DROP TABLE1; 
DROP TABLE2; 
+0

이 모든 동일한 세션에 빠른 재생을위한 – SriniV

+0

감사해야 있습니다. DDL 주말은 어떨까요 ?? 그것은 핸들인가? –

+0

DDL은 성공시 암시 적으로 커밋됩니다. 우리는 DDL에 대한 커밋을 발행하지 않습니다. 수동 롤백을 사용하려면 On 실패 스크립트가 있어야합니다. 예를 들어 : 두 개의 테이블을 만든 다음 롤백 WHENEVER SQLERROR CONTINUE; DROP TABLE1; DROP TABLE2;' – SriniV

관련 문제