프로시저와 함수의 차이가 궁금합니다. 0 5 1,258

by 체로키블루 [SQL Developer] 프로시저 함수 [2018.05.30 15:35:49]


안녕하세요?

프로시저와 함수의 차이가 궁금합니다.

 

제가 알고 있기로는 함수는 반환되는 값이 있고 프로시저는 없다라고만 알고 있었습니다.

실제 주로 사용하는 MSSQL 에서는 함수나 프로시저나 동일하게 Row, Table 리턴할 수 있구요..

근데 오라클도 똑같이 프로시저나 함수에서 Row, Table을 리턴할 수 있다고 하는데..

 

그렇다면..차이점이 무엇일까요?....그리고 동일하게 테이블 값을 리턴 받는다면 무엇을 쓰는게 효율적인지를 모르겠습니다ㅠㅠ

 

한수 부탁 드립니다. (꾸벅)

by 마농 [2018.05.30 16:04:18]

1. 함수는
  - 단일 항목을 반드시 리턴해야 합니다.
  - 말씀 하신 대로 이 항목의 타입이 단일값일수도 있고 테이블일 수도 있겠지요.
  - 쿼리 문장에서 사용 가능합니다.(단순 조회용인 경우)
  - 보통 조회용으로 쓰입니다.(갱신용으로도 사용 가능)
2. 프로시져는
  - 리턴값이 없습니다. 대신 OUT 변수를 사용합니다.
  - 그게 그거 아니냐? 할수도 있겠네요? 구문이 다르고 특성이 다르니 일단 다른걸로...
  - 쿼리 문장에서 사용 불가능합니다.
  - 보통 일괄처리(갱신)용으로 쓰입니다.(조회용으로도 사용 가능)
3. 동일하게 테이블을 결과로 받을거라면?
  - 쿼리에서 사용할 용도라면 함수를 사용하구요.
  - 그게 아니라면? 프로시져 사용하세요.


by 체로키블루 [2018.05.30 16:34:03]

답변 감사합니다! 동일하게 값을 리턴하는데, SELECT 조건에서 사용할 수 있는 부분 외에 차이점이 궁금했습니다.

혹시 MSSQL의 프로시저는 최초 파라메터의 값을 기준으로 실행계획이 생성된다고 하는데, 함수도 동일한건가요?

오라클은 통계계획의 평균 값으로 실행계획을 만든다고 알고 있거든요..


by 우리집아찌 [2018.05.30 16:04:35]

왜 프러시져를 SELECT한다고 생각하시죠?

주로 FUNCTION 은 단일값 반환을 하기위에 FROM절에 쓰이고

프로시져는 보통 호출해서 사용하게되죠.

또 FUNCTION은 값을 반환하기 위해 주로 쓰이고

프로시져는 DML문을 다중으로 처리하기위해 주로 사용되죠..

 

 


by 체로키블루 [2018.05.30 16:30:19]

답변 감사합니다.

MSSQL에서 함수를 호출하면 "SELECT * FROM [함수명](파라메터)"을 사용하지만, 프로시저를 사용하면 "EXEC [프로시저명](파라메터)"으로 호출하고 있어 레포트성 프로그램에서는 주로 간단한 프로시저를 사용했는데요. 

오라클에서도 테이블 형태의 값을 함수, 프로시저로 동일하게 리턴받을 수 있다고 하여 여쭤봤습니다.

(물론 함수, 프로시저 보다는 실행계획을 잘 사용할 수 있는 뷰를 사용해야 하지만요..ㅠ)


by 우리집아찌 [2018.05.30 16:41:03]

받을수는 있는데 일반적이지 않습니다.

굳이 어렵게 갈필요는 없다고 봅니다.

테이블 펑션 : http://www.gurubee.net/lecture/2238 

프로시져     : http://www.gurubee.net/lecture/1843

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