DATABASE
태태개발일지(DB 프로시저)
태태코
2023. 11. 22. 09:28
반응형
저장프로그램
- 정의
Database 저장 프로그램은 프로그램 로직을 프로시저로 구현하여 객체형태로 사용한다.
저장 프로그램은 일반 프로그래밍 언어에서 사용하는 함수와 비슷한 개념으로 취급된다.
Mysql일 경우에는
DELIMITER //를 선언해주어야 하고, //는 띄어쓰기를 해야 의식할 수 있다.
그후 CREATE PROCEDURE를 통해 프로시저 선언문을 해주고
BEGIN - END; 안에서 원하는 로직을 실행하면 된다.
Create Procedure()에 괄호안에 들어갈 값은 매개변수이고,
Declar or set 을 통해서 지역변수를 선언해 줄 수 있다.
예를 들면 코드는 이렇다.
DELIMITER //
CREATE PROCEDURE insertbook(
IN myBookID INTEGER,
IN myBookName VARCHAR(40),
IN myPublisher VARCHAR(40),
IN myPrice INTEGER)
BEGIN
INSERT INTO BOOK(bookid,bookname,publisher,price)
VALUES(myBookID,myBookName,myPublisher,myPrice);
END;
//
DELIMITER ;
<프로시저 선언>
CALL insertbook(1202020,'스포츠과학','마당과학서적',252200);
SELECT * from book where bookid = 1202020;
<프로시저 호출>
이렇게 원하는 책의 정보가 입력되게 된다.
DELIMITER //
CREATE PROCEDURE BookInsertOrUpdate(
IN myBookID INTEGER,
IN myBookName VARCHAR(40),
IN myPublisher VARCHAR(40),
IN myPrice INTEGER)
BEGIN
declare mycount INTEGER;
SELECT count(*) INTO mycount from Book
WHERE bookname LIKE myBookName;
IF mycount = !0 THEN
SET SQL_SAFE_UPDATES=0;
UPDATE Book SET price = myPrice
WHERE bookname LIKE myBookName;
ELSE
INSERT INTO BOOK(bookid,bookname,publisher,price)
VALUES(myBookID,myBookName,myPublisher,myPrice);
END IF;
END;
//
DELIMITER ;
IF ELSE문을 통해서 제어연산도 가능하다.
안에 지역변수를 선언하고 INTO 메서드를 통해서 지역변수에 결과 값을 넣을 수 도 있다.
CREATE PROCEDURE name(OUT name type)
이렇게 선언하면 결과값을 받을 수 도있다.
-- 만든 프로시저를 확인하는 코드이다.
SHOW CREATE PROCEDURE procedure_name;
-다음은 커서와 트리거에 개념도 올리겠다.-
반응형