저장 프로시저

SQL Server에서 함수와 저장 프로시저 작성하기

Meghan Kwartler

IT Consultant

저장 프로시저란?

정의

다음 기능을 갖는 루틴

  • 입력 매개변수 수락
  • 작업 수행 (EXECUTE, SELECT, INSERT, UPDATE, DELETE, 기타 SP 문)
  • 상태 반환(성공/실패)
  • 출력 매개변수 반환
SQL Server에서 함수와 저장 프로시저 작성하기

왜 저장 프로시저를 쓰나요?

이유

  • 실행 시간 단축
  • 네트워크 트래픽 감소
  • 모듈식 프로그래밍 가능
  • 보안 향상
SQL Server에서 함수와 저장 프로시저 작성하기

무엇이 다른가요?

UDF

  • 반드시 값을 반환
    • 테이블 반환 가능
  • SELECT 내 실행 가능
  • 출력 매개변수 없음
  • INSERT, UPDATE, DELETE 불가
  • SP 실행 불가
  • 오류 처리 없음

SP

  • 반환값 선택적
    • 테이블 반환 불가
  • SELECT에 내장해 실행 불가
  • 출력 매개변수와 상태 반환
  • INSERT, UPDATE, DELETE 가능
  • 함수 및 SP 실행 가능
  • TRY...CATCH로 오류 처리
SQL Server에서 함수와 저장 프로시저 작성하기

OUTPUT 매개변수와 함께 CREATE PROCEDURE

-- 코드 첫 4줄
-- SP 이름은 고유해야 함 
CREATE PROCEDURE dbo.cuspGetRideHrsOneDay 
    @DateParm date,
    @RideHrsOut numeric OUTPUT
AS
.......
SQL Server에서 함수와 저장 프로시저 작성하기

OUTPUT 매개변수와 함께 CREATE PROCEDURE

CREATE PROCEDURE dbo.cuspGetRideHrsOneDay
    @DateParm date,
    @RideHrsOut numeric OUTPUT
AS
SET NOCOUNT ON
BEGIN
SELECT 
  @RideHrsOut = SUM(
    DATEDIFF(second, PickupDate, DropoffDate)
  )/ 3600
FROM YellowTripData
WHERE CONVERT(date, PickupDate) = @DateParm
RETURN
END;
SQL Server에서 함수와 저장 프로시저 작성하기

출력 매개변수 vs. 반환값

출력 매개변수

  • 모든 데이터형 가능
  • SP당 여러 개 선언 가능
  • 테이블 값 매개변수 불가

반환값

  • 성공/실패 표시용
  • 정수형만 가능
  • 0은 성공, 0이 아니면 실패
SQL Server에서 함수와 저장 프로시저 작성하기

이제 CREATE PROCEDURE를 사용할 준비가 되었습니다!

SQL Server에서 함수와 저장 프로시저 작성하기

Preparing Video For Download...