본문 바로가기

DB

Maria DB SQL PROCRDURE 프로시저

#프로시저

#쿼리문의 집합.. 일괄처리용

 

DELIMITER (원하는 문자입력) #끝낼 시점 입력
CREATE PROCEDURE 프로시저이름()
BEGIN 
쿼리문 입력
END (위에 입력한 문자입력)
DELIMITER ;

 

DELIMITER $$
CREATE PROCEDURE userProc()
BEGIN 
SELECT * FROM student;
END $$
DELIMITER ;

 

#프로시저 출력

#CALL 프로시저 이름
CALL userProc();

 

#매개변수가 있는 프로시저

DELIMITER $$
CREATE PROCEDURE stuProc1(IN stuName VARCHAR(20))
BEGIN 
SELECT * FROM student WHERE stu_name=stuName;
END $$
DELIMITER ;

 

#프로시저 출력

CALL stuProc1('유가인');

 

#예제

DELIMITER $$
CREATE PROCEDURE userProc2(IN height INT, IN weight INT)
BEGIN
SELECT * FROM student WHERE stu_height>height AND stu_weight < weight;
END $$
DELIMITER ;

#프로시저 출력
CALL userProc2(170, 100);

 

#테이블 생성

CREATE TABLE if not exists testTBL #테이블이 있다면 생성되지 않는다.
id INT AUTO_INCREMENT PRIMARY KEY,
txt CHAR(10)
);

 

#IN, OUT을 사용하여 매개변수 입력받고 출력하기

DELIMITER %%
CREATE PROCEDURE userProc3(IN txtValue CHAR(10), OUT outValue INT)
BEGIN
INSERT INTO testTBL VALUES(NULL, txtValue);
SELECT MAX(id) INTO outValue FROM testTBL;
END%%
DELIMITER ;

 

#userProc3((testtbl에 들어갈 값입력), outValue값이 들어갈 변수 입력)

CALL userProc3('테스트값', @myValue);


SELECT CONCAT('현재 입력된 id값 ==>', @myValue);

 

#if~,  else
DELIMITER $$
CREATE PROCEDURE ifelseProc(IN userName VARCHAR(20))
BEGIN 
  DECLARE height INT; #변수선언

  #where절이 만족할떄 student테이블 stu_height 값을 선언한 변수 height에 넣는다.
  SELECT stu_height INTO height FROM student WHERE stu_name=userName; 
  if(height >= 170) then 
     SELECT '키가 크군요';
  else
     SELECT '키가 크진 않군요';
  END if;
END $$
DELIMITER ;

 

if 조건문 then

  실행할 내용

elseif 조건문 then

  실행할 내용

else

  실행할 내용

END if; #if문종료 

 

#프로시저 출력;

CALL ifelseProc('옥성우');

'DB' 카테고리의 다른 글

Maria DB Transaction 트랜젝션  (0) 2023.12.07
Maria DB TRIGGER  (0) 2023.12.07
Maria DB SQL Stored Function  (0) 2023.12.06
Maria SQL CONSTRAINT  (1) 2023.12.06
Maria DB SELECT용어 정리  (2) 2023.12.05