반응형
Notice
Recent Posts
Recent Comments
Link
개발은 처음이라 개발새발
MSSQL 프로시저 기초와 작성법 본문
반응형
프로시저는 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
반응형
'mysql' 카테고리의 다른 글
[MySQL] MySQL Installer를 활용해 버전 다운그레이드 하기 (0) | 2024.02.20 |
---|---|
[MySQL] MySQL Installer를 활용해 버전 관리하기 (0) | 2024.02.20 |
[MySQL] RANK() / DENSE_RANK() / ROW_NUMBER() (1) | 2024.02.12 |
[MySQL] SQL에서 REPLACE()함수 (0) | 2024.02.11 |
[MySQL] SQL에서 EXCEPT() (0) | 2024.02.11 |