개발은 처음이라 개발새발

MSSQL 프로시저 기초와 작성법 본문

mysql

MSSQL 프로시저 기초와 작성법

leon_choi 2024. 10. 27. 17:34
반응형

프로시저는 SQL Server에 저장되는 하나의 작업 단위로, 미리 정의된 SQL 문의 집합입니다. 데이터베이스에서 자주 사용되는 쿼리들을 하나의 함수처럼 실행할 수 있게 해줍니다.

프로시저의 장점

  1. 재사용성: 동일한 쿼리를 여러 번 작성할 필요 없이 저장된 프로시저를 호출하여 사용
  2. 성능: 최초 실행 시 최적화된 실행 계획을 캐시하여 재사용
  3. 유지보수: 프로시저 수정 시 이를 사용하는 모든 애플리케이션에 자동 반영
  4. 보안: 테이블에 직접 접근하지 않고 프로시저를 통해 접근하도록 제한 가능

프로시저 기본 구조

CREATE PROCEDURE 프로시저_이름
    @파라미터1 데이터타입,
    @파라미터2 데이터타입
AS
BEGIN
    SET NOCOUNT ON;
    -- SQL 문장들
    SET NOCOUNT OFF;
END

주요 구성 요소 설명

  1. CREATE PROCEDURE: 프로시저 생성 명령어
  2. 파라미터: 프로시저 실행 시 전달받을 값 정의
  3. SET NOCOUNT ON/OFF:
    • ON: 실행 결과의 행 수 메시지 미출력
    • OFF: 실행 결과의 행 수 메시지 출력
  4. BEGIN-END: 프로시저 본문의 시작과 끝 표시

실전 적용 예시

CREATE PROCEDURE SP_TB_LS_GAME_RESULT_BASKETBALL_FUN_FACT_STATS
    @I_GAME_ID VARCHAR(40),    -- 경기 ID
    @I_TEAM_ID VARCHAR(10),    -- 팀 ID
    @I_SEASON_ID VARCHAR(4),   -- 시즌 ID
    @I_GAME_CNT INT           -- 조회할 경기 수(-1: 전체)
AS
BEGIN
    SET NOCOUNT ON;
    
    SELECT 
        A.PLAYER_ID,
        (SELECT TEXT_KO 
         FROM LIVESCORE_NEW.dbo.TB_LS_TEXT_LANGUAGE_INFO C WITH(NOLOCK) 
         WHERE A.PLAYER_ID = C.TEXT_ID 
         AND C.GROUP_TYPE = 8) AS PLAYER_NAME
    FROM LIVESCORE_NEW.dbo.TB_LS_GAME_RESULT_BASKETBALL_PLAYER_INFO A
    WHERE [조건절];

    SET NOCOUNT OFF;
END

코드 설명

  1. 파라미터 정의
    • @I_GAME_ID: 기준이 되는 경기 ID
    • @I_TEAM_ID: 조회할 팀 ID
    • @I_SEASON_ID: 시즌 정보
    • @I_GAME_CNT: 조회할 경기 수
  2. NOCOUNT 설정
    • 성능 향상을 위해 SET NOCOUNT ON 사용
    • 프로시저 종료 전 OFF로 설정

테스트용 쿼리

-- 테스트용 변수 선언
DECLARE @I_GAME_ID VARCHAR(40) = '2023312024060106'
DECLARE @I_TEAM_ID VARCHAR(10) = '36'
DECLARE @I_SEASON_ID VARCHAR(4) = '2023'
DECLARE @I_GAME_CNT INT = 5

-- 프로시저 실행
EXEC SP_TB_LS_GAME_RESULT_BASKETBALL_FUN_FACT_STATS 
    @I_GAME_ID,
    @I_TEAM_ID,
    @I_SEASON_ID,
    @I_GAME_CNT

 

반응형