본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Stored Procedure
일련의 SQL 문을 하나의 이름으로 묶어 데이터베이스 서버에 저장해 두고 호출해 쓰는 프로그램
  • 서버에 저장되고 서버에서 실행된다. 클라이언트의 버퍼에 저장해 두는 것이 아니다 — 이 부분이 시험에서 틀린 선택지로 자주 나온다
  • 최초 실행 시 컴파일되어 실행 계획이 캐시되므로 이후 호출이 빠르다
  • 입력 매개변수, 출력 매개변수, 지역 변수를 정의할 수 있다
  • 제어문(IF, WHILE), 예외 처리, 커서를 쓸 수 있다
항목 내용
성능 실행 계획이 재사용된다. 여러 SQL 을 한 번의 호출로 처리하므로 네트워크 왕복이 줄어든다
보안 테이블 권한을 주지 않고 프로시저 실행 권한만 부여할 수 있다. 접근 통제 단위가 된다
SQL 인젝션 방어 매개변수를 쓰면 문자열을 이어 붙이지 않아 안전하다 (동적 SQL 을 쓰면 무의미해진다)
재사용·유지보수 업무 규칙을 한곳에 두고 여러 응용에서 공유한다. 로직을 고쳐도 응용 프로그램을 다시 배포하지 않는다
  • DBMS 종속적이다. 문법이 제품마다 다르다(Oracle PL/SQL, SQL Server T-SQL, MySQL SP)
  • 디버깅과 버전 관리가 어렵다
  • 비즈니스 로직이 DB 로 몰리면 DB 서버가 병목이 된다
  • 형상 관리 도구와의 연계가 응용 코드보다 불편하다
구분 특징
저장 프로시저 여러 값을 반환하거나 반환하지 않을 수 있다. `CALL`/`EXEC` 로 호출
저장 함수(Function) 반드시 값 하나를 반환한다. SQL 문 안에서 쓸 수 있다
트리거(Trigger) INSERT/UPDATE/DELETE 발생 시 자동으로 실행된다