SQL 프로그래밍
SQL 프로그래밍
SQL에도 다른 프로그래밍 언어와 비슷한 분기,흐름 제어,반복의 기능이 있다. 이러한 기능은 스터어드 프로시저, 스토어드 함수,커서 ,트리거 부분의 기본이 된다. SQL프로그래밍은 변수와 함께 잘 활용한다면 강력한 SQL 프로그래밍이 가능하다.
DELIMITER $$
CREATE PROCEDURE 스토어드 프로시저이름()
BEGIN
SQL 프로그램 코딩..
END $$
DELIMITER;
CALL 프로시저 이름();
DELIMITER $$ ~ END $$ 부분까지는 스토어드 프로시저의 코딩할 부분을 묶어준다.
CALL 스토어드 프로시저이름();은 CREATE PROCEDURE로 생성한 스토어드 프로시저를 실행 한다.
IF...ELSE
조건에 따라 분기한다. 한 문장 이상이 처리되어야 할 때는 BEGIN...END와 함께 묶어줘야한다.
부울 표현식이 참이라면 SQL문장1을 수행하고 거짓이면 SQL문장2를 수행한다.
IF<부울 표현식> THEN
SQL 문장1
ELSE
SQL 문장 2
END IF;
CASE
IF 문은 참 아니면 거짓 두가지만 있다. CASE는 다중 분기를 사용할 수 있다.
CASE문은 SELECT문에서 많이 사용된다.
CASE 입력값
WHEN 조건1 THEN 결과1
WHEN 조건2 THEN 결과2
...
ELSE default_result
END
WHILE과 ITERATER/LEAVE
WHILE문의 조건 식이 참인 동안 계속 반복되는 반복문 이다.
ITERATE와 LEAVE는 반복문 내에서 특정 '조건식'에 따라 다음 반복으로 건너뛰거나 반복문을 종료합니다.
-- WHILE
WHILE <부울 식> DO
SQL 명령문들...
END WHILE;
LOOP
-- SQL 문장
IF [조건식] THEN
LEAVE 레이블_이름;
END IF;
ITERATE 레이블_이름;
END LOOP 레이블_이름;
오류 처리
액션 : 오류 발생 시에 행동을 정의하는데 CONTINUE와 EXIT 둘 중 하나를 사용한다. CONTINUE가 나오면 제일 뒤의 처리할_문장 부분이 처리된다.
오류조건:어떤 오류를 처리할 것인지 지정한다.
처리할_문장 : 처리할 문장이 여러 개 일 경우는 BEGIN END로 묶어줘야 한다.
DECLARE 액션 HAMDLER FOR 오류조건 처리할_문장;
동적 SQL
PREPARE 문은 SQL 쿼리를 준비하는 역할을 한다. 쿼리 문자열을 매개변수로 받아, 이후 EXECUTE 문에서 실행할 수 있도록 준비한다..
EXECUTE 문은 PREPARE로 준비된 쿼리를 실제로 실행한다. 필요한 경우 매개변수를 전달할 수 있다.
DEALLOCATE PREPARE 문은 MySQL에서 준비된(prepared) SQL 문을 메모리에서 해제하는 명령어이다.
-- 쿼리를 준비
PREPARE myQuery FROM 'SELECT * FROM employees WHERE salary > ?';
-- 쿼리를 실행
SET @minSalary = 50000;
EXECUTE myQuery USING @minSalary;
-- 쿼리를 메모리에서 해제
DEALLOCATE PREPARE myQuery;