본문 바로가기
SQL

땅꼬마의 MSSQL 프로시저(PROCEDURE) 생성해보기!

by 땅꼬마개발자 2022. 9. 1.

업무를 시작하고 가장 당황스러웠던것 중 하나가 프로시저였다.

사실 프로시저 부분을 배울때 따라가지 못했기도 했었고..... 이해를 못했었다.

(대부분 복붙으로 처리함) 

 

그러다보니 2000~3000줄이 넘어가는 프로시저를 보는 순간 ??????? 했던 기억이 있다.

하지만 결국 프로시저는 변수값이 들어왓을때 일련의 작업을 한 번에 수행해준다는 것 요것만 기억하면

2000줄이건 3000줄이건 내용을 이해하는데는 크게 어렵지 않을 것이다!!

그럼 간단하게 프로시저를 생성하며 따라가보자!!

 

0. 기본적인 프로시저 구조

CREATE PROCEDURE 프로시저명 (
   --입력되는 변수(예시)
   @I_PRODUCT_CD VARCHAR(10)
)
AS
BEGIN
	로직정의(예시)
    SELECT @I_PRODUCT_CD
END

 

1. 데이터를 담을 상품테이블 생성

--PRODIUCT TABLE 생성

CREATE TABLE TEST_PRODUCT_M(
	IDX_NO INT IDENTITY(1,1) NOT NULL,
	PRODUCT_CD VARCHAR(10) PRIMARY KEY,
	PRODUCT_NM VARCHAR(30) NOT NULL,
	PRODUCT_PRICE INT NOT NULL,
	SAVE_USER VARCHAR(10),
	SAVE_DATE DATE
)

* mssql에서 identity(1,1) 사용하면 1씩 증가하는 인덱스를 만들 수 있다.(오라클에 시퀀스 역할)

 

 

2. 데이터를 입력할 프로시저 생성

-- 상품등록 프로시저 생성
CREATE PROCEDURE PRODUCT_INS_SP(
	@I_PRODUCT_CD INT,
	@I_PRODUCT_NM VARCHAR(30),
	@I_PRODUCT_PRICE INT,
	@I_SAVE_USER VARCHAR(10)
)
AS
BEGIN

	INSERT INTO TEST_PRODUCT_M (PRODUCT_CD, PRODUCT_NM, PRODUCT_PRICE, SAVE_USER, SAVE_DATE)
	VALUES(@I_PRODUCT_CD, @I_PRODUCT_NM, @I_PRODUCT_PRICE, @I_SAVE_USER, GETDATE());

END

4개의 변수를 입력받아 데이터를 입력(ROW생성)하는 프로시저를 생성하였다.

 

3. 실행

EXEC PRODUCT_INS_SP 1000000001, '애플워치', 200000, 'ADMIN';

 

4. 입력값 확인

 

*프로시저의 장점(사용하는 이유?)

땅꼬마 개발자가 일하는 곳에서는 배포가 매일 발생하지는 않는다. 하지만 매일 데이터관련한(주문, 생산) 이슈들이 있다.

JAVA에서 데이터를 조작하여 DB로 넘어오는 경우에는 무조건 배포가 진행되어야 하지만 프로시저를 사용하는경우 JAVA에서는 프로시저만 호출하고 프로시저에서 데이터를 조작하여 배포작업을 거치지 않고 데이터를 조작할 수 있다!!