728x90
요약
프로시저 | 함수 |
특정 작업 수행 | 특정 계산 수행 |
리턴값 유동적 | 리턴값 반드시 |
리턴값 여러개 | 리턴값 하나 |
서버(DB)단에 기술 | 화면(client)단에 기술 |
수식 내에 사용 불가 | 수식 내 사용 가능 |
단독 문장 구성 가능 | 단독 문장 구성 불가능 |
프로시저 Procedure
- 데이터베이스에 대한 일련의 작업을 정리한 절차를 관계형 데이터베이스 관리 시스템에 저장한 것
- 일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합
- 특정 작업을 위한 쿼리들의 블록
- 장점
- 하나의 요청으로 여러 SQL문을 실행시킬 수 있다 (네트워크 부하 줄임)
- 네트워크 소요시간을 줄여 성능개선
- 여러 어플리케이션과 공유 가능 (API처럼 공유 가능)
- 기능 변경이 편함 (특정 기능을 변경할 시, 프로시저만 변경하면 된다.)
- 단점
- 문자나 숫자열 연산에 사용하면 오히려 C, Java보다 느린 성능을 보일 수 있다.
- 유지보수가 어렵다. (프로시저가 앱의 어디에 사용되는지 확인이 어려움)
함수 Function
- 데이터베이스에서 함수는 일반적인 프로그래밍 함수와 동일
- 매개변수를 받아 특정 계산(작업)을 수행하고 결과를 반환하는 구조
- 특정 동작을 수행하는 코드 부분을 의미
- 특정값(매개변수)을 입력받아 여러 쿼리문을 작업한 뒤 반환하는 기능을 의미
프로시저와 함수의 차이
프로시저 | 함수 | |
의미 | 보통 단독으로 실행해야할 작업을 위임받았을때 사용 | 하나의 특별한 목적의 작업을 수행하기 위해 독립적으로 설계된 코드의 집합 |
함수가 여러 작업을 위한 기능이라면, 프로시저는 작업을 정리한 절차 | ||
매개변수 | 매개변수를 입력, 출력, 입출력 형식으로 받을 수 있음 | 매개변수를 입력 형식으로만 받을 수 있음 |
반환값 | 반환값을 가질 수 도 있고, 가지지 않을 수 도 있음 | 반드시 반환값을 가져야함 |
쿼리문 내에 실행 가능 | SELECT, WHERE 문에서 사용불가 | SELECT, WHERE 문에서 사용가능 |
처리장소 | 서버 | 클라이언트[화면] |
728x90
'IT > SQL' 카테고리의 다른 글
MySQL[18] - 트랜잭션 개념, 락(lock), 격리수준 (0) | 2022.06.14 |
---|---|
MySQL[17] - Full Text Search, Bulk Insert (0) | 2022.06.14 |
[SQL] 기본 요소 (0) | 2022.06.06 |
MySQL[16] - 파티셔닝/샤딩, 데이터베이스 복제 (0) | 2022.06.06 |
MySQL[15] - 데이터베이스 백업/복원/로그 (0) | 2022.06.06 |