SQL - 프로시저와 함수의 차이

 

함수와 프로시저의 차이

  함수(Function) 프로시저(Procedure)
데이터베이스에서 비즈니스 로직을 캡슐화하는데 사용
용도(Use) SELECT문, JOIN절 또는 하위 쿼리에서 사용 가능 명시적으로 호출해야만 실행 가능
반환 값(Return Value) 반드시 값 반환해야 함 값을 반환하지 않아도 됨,
대신 SQL문을 통해 여러 결과 집합을 반환하는 데이터를 조작 할 수 있음
정의 (Defined) 주어진 입력을 사용하여 결과를 계산하는 데 사용 특정 작업을 순차적으로 수행하는 데 사용
입력/출력 파라미터 (In/Out Parameter) 입력 매개 변수와 반환 출력 매개 변수 허용 입력 및 출력 매개 변수 허용
호출 (Call) 함수 내에서 프로시저 호출 불가능,
호출될 때마다 컴파일 진행
프로시저 내에서 함수 호출 가능,
한 번 컴파일 이 후 컴파일 없이 여러 번 호출 가능
결과 집합 (Result Set) 단일 값 또는 테이블을 반환 SELECT문을 사용하여 여러 결과 집합 반환 가능
데이터 조작 명령 (DML) DML문 함수 내 실행 불가 DML문 프로시저 내 실행 가능
SQL 쿼리 (SQL Query) 쿼리 내에 함수 호출 가능 쿼리 내에 프로시저 호출 불가
예외 처리 (try-catch) try-catch 사용 불가 try-catch 사용 가능
명시적 트랜잭션 처리
(Explicit Transaction Handling)
명시적 트랜잭션 사용 불가 명시적 트랜잭션 사용 가능
활용 (Suitabillity) 간단한 계산이나 데이터 변환을 캡슐화 하는데 적합 여러 SQL문, 입력 및 출력 매개 변수 또는 오류 처리를 요구하는 더 복잡한 작업에 적합
실행 (Execute) 클라이언트에서 실행 서버에서 실행

참고

tutorialspoint.com - Difference between Function And Procedure