SQL 프로그래밍은 기본적으로 스토어드 프로시저 안에 만들어야 한다.

스토어드 프로시저 구조

DELIMITER $$
CREATE PROCEDURE 스토어드_프로시저_이름()
BEGIN
	-- 이 부분에 SQL 프로그래밍 코딩
END $$
DELIMITER ;

CALL 스토어드_프로시저_이름();

1. IF 문의 기본 형식

IF <조건식> THEN
	SQL 문장들
END IF;

‘SQL 문장들’이 한 문장이라면 그 문장만 써도 되지만, 두 문장 이상이 처리되어야 할 때는 BEGIN ~ END 로 묶어주어야 한다.

DROP PROCEDURE IF EXIST ifProc1;

DELIMITER $$
CREATE PROCEDURE ifProc1()
BEGIN
	IF 100 = 100 THEN
		SELECT '100은 100과 같습니다';
	END IF:
END $$
DELIMITER;

CALL ifProc();

Untitled

2. IF ~ ELSE 문

DROP PROCEDURE IF EXISTS ifProc12;

DELIMITER $$
CREATE PROCEDURE ifProc2()
BEGIN
	DECLARE myNum INT;
	SET myNum = 200;
	IF myNum = 100 THEN
		SELECT '100입니다.';
	ELSE
		SELECT '100이 아닙니다.';
	END IF;
END $$
DELIMITER ;

CALL ifProc2();

Untitled

3. IF 문의 활용

아이디가 APN(에이핑크)인 회원의 데뷔 일자가 5년이 넘었는지 확인해보고 5년이 넘었으면 축하 메세지 출력

DROP PROCEDURE IF EXISTS ifProc3;

DELIMITER $$
CREATE PROCEDURE ifProc3()
BEGIN
	DECLARE debutDate DATE; -- 데뷔 일자
	DECLARE curDate DATE; -- 오늘 
	DECLARE days INT; -- 활동한 일수

	SELECT debut_date INTO debutDate
		FROM market_db.member 
		WHERE mem_id = 'APN';

	SET curDate = CURRENT_DATE(); -- 현재 날짜
	SET days = DATEDIFF(curDate, debutDate); -- 날짜의 차이, 일 단위

	IF (days/365) >= 5 THEN
		SELECT CONCAT('데뷔한 지 ', days, '일이나 지났습니다. 축하합니다.');
	ELSE
		SELECT '데뷔한 지 ' + days + '일밖에 안되었네요. 화이팅';
	END IF;
END $$
DELIMITER ;

CALL ifProc3();