11. stored procedure

Last updated - 2024년 11월 21일 Edit Source

    유튜버 인코드 님의 데이터베이스 강의를 정리한 내용


    # Stored procedure

    Stored procedure : 사용자가 정의한 프로시저

    • RDBMS에 저장되고 사용되는 프로시저
    • 구체적인 하나의 태스크(task)를 수행한다.
    • stored function과는 다르다.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    > DELIMITER $$
    
    > CREATE PROCEDURE 이름(IN 파라미터 타입, OUT 파라미터 타입, INOUT 파라미터 타입) 
    > BEGIN
    > 	수행할 
    > END
    > $$
    
    > DELIMITER ;
    
    • 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를 사용하는 일은 잘 없다. 이는 다음에서 확인하자.

    Comment