티스토리 뷰
프로시저는 프로그램의 함수와 같은 개념으로 SQL명령어의 조합으로 새로운 함수를
만들어 저장 해 놓고 사용하는 것이다.
> 삭제
DROP PROCEDURE IF EXISTS INSERT_BOARD;
//프로시저를 생성하기 전에 INSERT_BOARD라는 프로시저가 있으면 삭제한다.
> 생성
CREATE PROCEDURE INSERT_BOARD(PREGION INT(11), PWRITER VARCHAR(30), PTITLE VARCHAR(200))
BEGIN
INSERT INTO BOARD(REGION, WRITER, TITLE) VALUES (PREGION,PWRITER,PTITLE);
END;
//보라색의 PREGION, PWRITER 등의 변수는 외부에서 함수를 호출할 때 넣어줄 인자의 타입을 결정 하는 것이기도 하고, BEGIN과 END사이에서 유효한 값이다.
> 호출
CALL INSERT_BOARD(1,'춘이춘이','춘이춘이');
//디비 사용자가 ROOT가 아니라면 GRANT권한 설정을 해줘야 EXECUTE가 가능하다.
out파라미터 select하기
프로시저 함수의 인자 값으로 in과 out이 있는데, in은 프로시져 안에서 작업할 변수, out은 프로시저 밖에서 select로 호출하기 위한 출력용 변수 인 듯하다.
> 생성
DELIMITER $$
CREATE PROCEDURE make_seq(in board_no VARCHAR(20), out result_value varchar(20))
BEGIN
SET result_value = (SELECT SUBSTRING(board_no, INSTR(board_no, '_')+1) AS board_no FROM DUAL);
END $$
DELIMITER ;
> 호출
CALL make_seq('SDADS_111', @result_value);
> 출력
SELECT @result_value;
'DB > 정리' 카테고리의 다른 글
[mysql] user생성,삭제 및 권한 명령어 등 (0) | 2022.10.25 |
---|---|
[MySQL] 특정 테이블 중복된 칼럼 갯수 구하기 (0) | 2022.10.25 |
[MY-SQL] DATE_FORMAT 함수 (날짜형식을 바꿔줌) (2) | 2022.10.25 |
무결성 제약조건 (0) | 2022.10.24 |
인덱스? (0) | 2022.10.24 |