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;

 

-다음은 커서와 트리거에 개념도 올리겠다.-

반응형