[MSSQL] 저장 프로시저(Stored Procedure)

 

안녕하세요. 오늘은 라이프사이클 재무에 대한 모든 것_글라이드 유튜브 강의를 듣고 참고하여 MSSQL의 저장 프로시저에 대해 포스팅을 작성하도록 하겠습니다.

 

 

저장 프로시저란?

SQL Server에서 제공하는 프로그래밍 기능으로, 반복적이거나 복잡한 데이터베이스 작업을 효율적으로 수행할 수 있게 합니다. 저장 프로시저는 여러 SQL 쿼리를 하나로 묶어 저장할 수 있으며, 이로 인해 복잡한 비즈니스 로직을 캡슐화하고 재사용할 수 있습니다.

  • 복잡한 비즈니스 로직을 포함할 수 있음
  • 데이터 처리와 트랜잭션 관리가 가능
  • 코드 재사용과 유지보수가 용이해짐
  • 네트워크 트래픽 감소: 클라이언트와 서버 간의 네트워크 통신을 줄임

 

 

저장 프로시저 문법

생성

CREATE PROCEDURE <procedure_name>
    @<매개변수1> 데이터타입,
    @<매개변수2> 데이터타입,
    ...
AS
BEGIN
    <sql_query> -- 비즈니스 로직 작성
END;

 

실행

EXEC <procedure_name>;

 

 

생성 & 실행 예시

예시1

-- SP_SELECT_COMPANYINFO라는 프로시저 생성
CREATE PROCEDURE SP_SELECT_COMPANYINFO
AS
BEGIN
    SELECT * 
    FROM Companyinfo
END;

GO
-- 실행
EXEC SP_SELECT_COMPANYINFO;

 

 

예시2

-- 기업코드와 기간을 입력 받아 해당 기간 동안의 기업의 가격을 출력하는 프로시저 생성
CREATE PROC SP_SELECT_STOCKPRICE @id INT, @startdate DATE, @enddate DATE -- 기업코드, 시작날짜, 마지막날짜
AS
BEGIN
    SELECT DATE_, CLOSE_
    FROM Stockprice
    WHERE ID = @id
      AND DATE_ BETWEEN @startdate AND @enddate
    ORDER BY DATE_ DESC
END;

GO
-- 실행
EXEC SP_SELECT_STOCKPRICE 40853, '2020-10-01', '2020-10-13';

 

 

예시3

-- 테이블의 이름을 매개변수로 받아 해당 테이블의 데이터를 출력해주는 프로시저 생성
CREATE PROC SP_SELECT_TABLE_INFO @tablename VARCHAR(3000)
AS
BEGIN
    DECLARE @sqlQuery VARCHAR(3000)
    SET @sqlQuery = 'SELECT * FROM ' + @tablename

    EXEC(@sqlQuery)
END

GO
-- 실행
EXEC SP_SELECT_TABLE_INFO 'Stockprice';

 

 

 

생성한 프로시저는 SSMS에서

데이터베이스 > 사용 중인 DB > 프로그래밍 기능 > 저장 프로시저에서 확인할 수 있습니다.

 

 

 

수정

ALTER PROCEDURE <procedure_name>
    @<매개변수1> 데이터타입,
    @<매개변수2> 데이터타입,
    ...
AS
BEGIN
    <sql_query>
END;

 

삭제

DROP PROCEDURE <procedure_name>;

 

삭제 예시

DROP PROCEDURE SP_SELECT_COMPANYINFO;
DROP PROCEDURE SP_SELECT_STOCKPRICE;