프로시저 질문 드립니다 0 4 2,473

by 신입개발자 [PL/SQL] [2014.12.05 15:45:55]


PL/SQL을 사용하다가 궁금한점이 있어서 질문드립니다.

프로시저를 생성할때 가져오는 파라미터값의 타입에 IN,OUT 이렇게 있더라구요

그래서 검색해보니 IN타입은 값을 변경할 수 없다고 하고 OUT은 값을 변경하고 반환할 수 있다고 하더라구요

그러면 OUT이 있는 FUNCTION이랑 똑같은 의미를 가진다는 것인가요>?

OUT의 의미가 궁금하고 어떻게 쓰이는지 질문드립니다

by 아발란체 [2014.12.05 16:20:21]

@.@);;; IN 타입이 값을 변경 할 수 없고 OUT 값은 변경하고 반환할 수 있다는 것이.... 아무리 생각해도 어떤 의미로 쓰셨는지 잘 이해가 되지는 않지만... 함수와 프로시저의 차이를 말씀 드리면.... 결과를 반환하는 개념이 있는 것은 같지만.. 결과 값 구조는 많이 다릅니다.

 

함수는 DB 스크립트를 처리하다 복잡하고 재사용성 높은 부분을 구조화하여 스크립트를 보다 단순히 사용하는 것이고 구조화 했다고 캐슁 효과가 발생하지는 않습니다.(저장형 함수 제외) 프로시저는 DB 스크립트를 단순화 하여 재사용 할 목적으로 사용하지는 않습니다. 프로시저 말 그대로 단위 프로그램을 짜는 것이며 OUT은 보통 어플리케이션과 연계하여 처리 하는 스토어프로시저 방식에서 많이 씁니다. 프로그램을 실행하다가 처리 결과를 OUT를 통해 받는 목적이이라 봅니다.

 

같은 얘기로 함수는 질의 단순화가 될 것 같고 프로시저는 단위 프로그램 실행 후 결과라고 볼 수 있을 것 같습니다.


by 신입개발자 [2014.12.08 10:20:32]

답변 감사드립니다.

그럼 보통 함수는 재사용성이 높을때 사용하고 프로시저는 코드를 가독성이 좋게 보기위해 사용한다는 뜻인가요??

제가 알기로는 프로시저는 리턴하지 않는것으로 알고 있는데 프로시저도 리턴값이 있다는 뜻인가요??

 


by 아발란체 [2014.12.08 10:39:40]

= ㅅ =)ㅋ 프로시저 사용 방법을 잘 모르시면, 최대한 프로시저를 사용하지 않고 해결하시는 것이 좋을 것 같습니다... 그러다 보면 어느 순간 해당 방법으로 해결 되지 않을 때 프로시저를 검토해보시는 것도 좋은 방법이 될 것 같습니다. 그리고 말이 좀 애매하긴 한데, 프로시저도 리턴 개념이 있다는 것은 일반화 될 수 있을 것 같은데 리턴 값이 무조건 있다고 하는 것은 약간 개념적으로 위배될 수 있을 것 같습니다. @_@);; 정확히 프로시저는 프로토타입 부분에 인자 값을 설정 할 수 있으며 인자 값은 입력 성격과 출력 성격 IN과 OUT으로 정의 할 수 있습니다. OUT 부분에 인자 값을 설정하면 리턴 값이 아닌 프로시저 수행 중 사용자가 정의한 값이 OUT 인자 값으로 반환 됩니다. 함수는 보통 처리 결과 값이 리턴 되지만, 프로시저는 처리 결과가 아닌 처리를 하고 사용자가 지정한 값들이 OUT으로 반환 됩니다. 물론 의도적으로 함수처럼 처리 결과를 리턴(=반환) 할 수 있습니다.


by 마농 [2014.12.08 10:52:33]

저는 단순하게 구분합니다.

함수는 단순 조회용

프로시져는 배치 작업용

물론 조회용 프로시져도 있고, 작업용 함수도 있을 수는 있습니다만...

함수는 조회용, 프로시져는 작업용으로 쓰는게 가장 적당하다고 생각합니다.

 

함수의 리턴과 프로시져의 OUT 은 약간 다른데요.

함수의 리턴은 필수이며 변수명 없이 타입만 지정하구요, 오직 1개입니다.

프로시져의 아웃은 선택이며 변수명이 있고, 여러개 가능합니다.

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