11. stored procedure
유튜버 인코드 님의 데이터베이스 강의를 정리한 내용
# Stored procedure
Stored procedure : 사용자가 정의한 프로시저
- RDBMS에 저장되고 사용되는 프로시저
- 구체적인 하나의 태스크(task)를 수행한다.
- stored function과는 다르다.
|
|
- IN : 값을 파라미터로 전달받을 수 있지만, 값을 바꿀 수 없음
- OUT : 호출 당시 값을 전달받을 필요는 없고, 최종적으로 값을 반환할 때 사용
- INOUT : 값을 전달받을 수 있으면서도, 동시에 값을 반환하는 역할도 가능
- 파라미터는 default로 IN으로 동작함
- 따라서, IN 키워드는 생략해도 되지만, OUT 키워드는 반드시 작성해야함
stored procedure 특징
- 이외에도 조건문을 통해 분기처리 가능
- 반복문 수행 가능
- 에러를 핸들링하거나 예외를 일으키는 등의 다양한 로직 정의 가능
# 예제
ex) 두 정수의 곱셈 결과를 가져오는 프로시저를 작성해보자
ex) 두 정수를 맞바꾸는 프로시저를 작성해보자
ex) 각 부서별 평균 연봉을 가져오는 프로시저를 작성해보자
ex) 사용자가 프로필 닉네임을 바꾸면 이전 닉네임을 로그에 저장하고 새 닉네임으로 업데이트하는 프로시저를 작성해보자
now()
는 현재시간, 업데이트 되는 시간을 위해서 가져왔음
# function과의 차이
stored procedure vs stored function
- 이외에도 …
- 내부적으로 다른 function/procedure를 호출할 수 있는지
- resultset( = table)을 반환할 수 있는지
- precompiled execution plan을 만드는지
- 조금더 효율적으로 실행될 수 있도록 미리 컴파일할 수 있는지를 말하는거
- try-catch를 사용할 수 있는지
- 등등 …
와닿지 않느다면 예시를 봐보자.
stored procedure
- 반드시 OUTPUT 파라미터를 통해서 결과값 반환해야함
stored function
- 반드시 RETURN 키워드를 통해서 반환해야함
- function이면 이렇게 SQL문에 사용 가능
그러나, 실무에서 stored procedure를 사용하는 일은 잘 없다. 이는 다음에서 확인하자.