프로시저에서 BEGIN 이 여러번 나오는대요... 0 6 12,801

by 손님 [2009.08.03 16:11:15]


긴 프로시져를 보니...

BEGIN 문장이 여러버 나오더라구요.

 

이게 뭔가요??

함수같은건 아니거 같은대..

 

1번째 BEGIN 이 성공하면 다음 BEGIN 으로 가고 그러는가요?

중간에 에러나면 밑으로 빠지고..

 

BEGIN 이 여러번 이유가 뭔가요?

by 마농 [2009.08.03 16:27:28]
begin 으로 시작해서 end 까지를 하나의 처리 단위 블럭이라고 보시면 됩니다.
물론 블럭 안에 블럭이 내포될 수 있습니다.

by .. [2009.08.03 16:37:37]
저는 이론적인 건 잘 모르겠지만서도 주로 begin ..... end 사이에 에러가 발생할 때 에러처리하기 위한 용도로 사용합니다. begin end 사이에 insert 문이 달랑 하나 있다면 insert 시에 에러가 났다는 거겠죠. begin insert .... when others then RAISE_APPLICATION_ERROR... end 요런 식으루요.

by 손님 [2009.08.03 17:37:06]
음.잘 이해가지 않네요.
begin이 프로그램으로 보며 if문 같은건가요?
어차피 위에서 아래로 쭉 실행 돼는거 안닌가요?
비긴을 여러번 ㅤㅆㅓㅅ다구 해서 1번째 비긴에서 에러나며 그냥 종료 돼는거 아닌가요?

by 마농 [2009.08.03 17:56:47]
begin ~ end 블럭내에 별도의 exception 처리를 명시하지 않았다면 에러발생시 종료되는것이 맞습니다.
그러나 exception 구문으로 예외처리를 했다면 프로그램이 바로 종료되지는 않습니다.
예외처리를 하고 난후 end 절 다음 부분부터 실행되겠지요.

by 문자 [2009.08.03 19:44:44]
try {
// 로직 수행
try {
// 로직 수행
} catch (Exception e) {
//에러 처리
}
} catch (Exception e) {
// 애러처리
}

혹시 java 처럼...try 구문과 같은건가요..?

by 마농 [2009.08.03 21:47:30]
비슷하다고 생각되네요.
java의 try 구문은 catch구문과 쌍을 이루어야 하는 것으로 아는데요. 맞나??
pl/sql의 begin 구문에는 반드시 exception 구문이 오는것은 아닙니다.
어차피 exception 구문이 없는 begin구문은 큰 의미가 없으므로
exception구문을 넣는것을 기준으로 봤을때 비슷한 기능을 한다고 보시면 되겠네요.
단순하게 생각하세요.
begin end 는 하나의 작업 처리의 시작과 끝을 나타냅니다.
하나의 큰 작업은 여러개의 세부 작업으로 나눌수 있겠죠.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입