mysql
MSSQL 프로시저 기초와 작성법
leon_choi
2024. 10. 27. 17:34
반응형
프로시저는 SQL Server에 저장되는 하나의 작업 단위로, 미리 정의된 SQL 문의 집합입니다. 데이터베이스에서 자주 사용되는 쿼리들을 하나의 함수처럼 실행할 수 있게 해줍니다.
프로시저의 장점
- 재사용성: 동일한 쿼리를 여러 번 작성할 필요 없이 저장된 프로시저를 호출하여 사용
- 성능: 최초 실행 시 최적화된 실행 계획을 캐시하여 재사용
- 유지보수: 프로시저 수정 시 이를 사용하는 모든 애플리케이션에 자동 반영
- 보안: 테이블에 직접 접근하지 않고 프로시저를 통해 접근하도록 제한 가능
프로시저 기본 구조
CREATE PROCEDURE 프로시저_이름
@파라미터1 데이터타입,
@파라미터2 데이터타입
AS
BEGIN
SET NOCOUNT ON;
-- SQL 문장들
SET NOCOUNT OFF;
END
주요 구성 요소 설명
- CREATE PROCEDURE: 프로시저 생성 명령어
- 파라미터: 프로시저 실행 시 전달받을 값 정의
- SET NOCOUNT ON/OFF:
- ON: 실행 결과의 행 수 메시지 미출력
- OFF: 실행 결과의 행 수 메시지 출력
- 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
코드 설명
- 파라미터 정의
- @I_GAME_ID: 기준이 되는 경기 ID
- @I_TEAM_ID: 조회할 팀 ID
- @I_SEASON_ID: 시즌 정보
- @I_GAME_CNT: 조회할 경기 수
- 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
반응형