티스토리 뷰

저장 프로시저는..

하나 이상의 sql문을 후에 사용하기 편하게 저장해둔 것.


mysql 4.x 이하 버전에서는 프로시저를 지원하지 않는다.

mysql 5.x 부터 지원..


저장 프로시저를 사용하는 이유?

- 복잡한 작업을 하나의 단위로 묶어 쉽게 사용하기 위해

- 같은 코드를 반복할 필요없이 프로시저를 만들어 놓고 재활용 하기 위해

- 테이블의 칼럼이름이나 로직 등이 변경 되었을 때 저장 프로시저만 변경하면 되므로 사용하는 입장에서는 신경을 쓸 필요가 없다

- 저장 프로시저는 컴파일된 형식으로 저장되기 때문에 DBMS가 명령을 수행하는 작업이 보다 적어지므로 성능의 향상을 기대해 볼 수 있다.




간단한 사용법(사용프로그램 토드 FOR MYSQL)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10

CREATE PROCEDURE BOARD_COUNT(OUT BOARDCOUNT SMALLINT) BEGIN SELECT COUNT(*) INTO BOARDCOUNT FROM BOARD; END; CALL BOARD_COUNT(@BOARD_COUNT); SELECT @BOARD_COUNT AS BOARD_COUNT; SELECT * FROM BOARD;

CREATE PROCEDURE 프로시저명(키워드 변수명 데이터타입,....)

BEGIN

프로시저 SQL 수행 구문

SELECT COUNT(*) INTO BOARDCOUNT FROM BOARD;

END;

기본적으로 위와 같은 형태를 띈다.

프로시저의 매개변수로 OUT키워드가 존재하는데 따로 IN과 INOUT도 있다.

IN키워드는 저장 프로시저로 값을 전달하는 것이고, OUT은 저장 프로시저에서 값을 가져오는 것이며, INOUT은 프로시저로 값을 전달하기도하고, 가져오기도 한다.


CALL BOARD_COUNT(@BOARD_COUNT);

이 명령문은 생성한 프로시저를 호출한 구문이다.

인자로 들어 있는 @BOARD_COUNT는 MYSQL변수 인데..

가독성을 위해서 프로시저내의 BOARDCOUNT와 이름을 일치 시켰을 뿐

다른이름 (이를테면 @A, @B, @C 등 아무거나)을 지정해도 상관없다.

어쨋든 이 구문이 실행되면 

프로시저 내의 BEGIN과 END사이의 구문이 실행되고, BOARDCOUNT가 @BOARDCOUNT에 저장된다.


 

그리고 비로써 SELECT @BOARDCOUNT를 호출하면 콘솔창에 해당 구문의 결과가 나타날 것이다.



그리고 @변수는 당연하지만 커넥션이 닫히면 사라진다.




'DB > 정리' 카테고리의 다른 글

VIEW(뷰)  (0) 2022.10.24
[MYSQL] 데이터타입  (0) 2022.10.24
[MySQL] ENGINE 과 CHARSET 변경  (0) 2015.10.29
[MySQL] ALTER TABLE  (0) 2015.09.11
[MySQL] 우편번호 밀어넣기 (toad for mysql사용)  (0) 2014.05.29
Comments
최근에 올라온 글
최근에 달린 댓글
TAG
more
Total
Today
Yesterday