스토어드 프로시저

2022. 4. 19. 23:47DB/Mysql-기초

스토어드 프로시저의 개요

 -스토어드 포로시저는 쿼리문의 집합으로 어떠한 동작을 일괄 처리하기 위한 용도로 사용된다.

  자주 사용되는 일반적인 쿼리를 사용하는 것보다는 이것을 모듈화 시켜서 필요할 때마다 호출

  만 하면 훨씬 편리하게 MySQL을 운영할 수 있다.

 

프로시저 형식

DELIMITER $$		//DELIMITER : 구분문자  만약 없으면 ;으로 끝나는 부분이 따로따로 보내짐
CREATE PROCEDURE 스토어드 프로시저이름(IN 또는 OUT 파라미터)
BEGIN

    IF 2> 1 THIN;
    SELECT '1';
    END IF;
    
END $$
DELIMITER ;

호출 : CALL 스토어드 프로시저이름();

 

스토어드 프로시저의 수정과 삭제

  -수정은 간단히 ALTER PROCEDURE를 사용하고, 삭제는 DROP PROCEDURE를 사용하면 된다.

 

매개 변수의 사용

-입력 매개 변수를 지정하는 형식

IN 입력_매개변수_이름 데이터_형식

 

디폴트 값은 프로시저의 실행 시에 매개 변수에 값을 전달하지 않았을 때, 사용되는 값이다.

입력 매개 변수가 있는 스토어드 프로시저를 실행하기 위해서는 다음과 같이 사용한다.

CALL 프로시저_이름(전달 값);

 

DELIMITER $$
CREATE PROCEDURE userProc1(IN userName VARCHAR(10))
BEGIN
	SELECT * FROM userTbl WHERE name = userName;
END $$
DELIMITER;

CALL userProc1('헝길덩');

 

출력 매개 변수를 지정하기 위해서는 다음의 형식을 따른다.

OUT 출력_매개변수_이름 데이터_형식

출력 매개 변수에 값을 대입하기 위해서는 주로 SELECT ~ INTO문을 사용한다.

출력 매개 변수가 있는 프로시저를 실해아힉 위해서는 다음과 같이 사용한다.

CALL 프로시저_이름(@변수명);
SELECT @변수명;
DELIMITER $$
CREATE PROCEDURE userProc(
	IN txtValue CHAR(10),
    OUT outValue INT
}
BEGIN
	INSERT INTO testTbl values(NULL,txtValue);   //널값이 들어가는 이유: AUTO_INCREMENT
    SELECT MAX(id) INTO outValue FROM testTbl;
END &&
DELEMITER;

CALL userProc('테스트값', @myValue);
SELECT CONCAT('현재 입력된 ID 값 ==>, @myValue);

'DB > Mysql-기초' 카테고리의 다른 글

스토어드 함수  (0) 2022.04.20
Mysql-DML  (0) 2022.03.23
Mysql-DDL  (0) 2022.03.23