본문 바로가기
DB/MySQL

mysql function 생성하기

by avvin 2019. 7. 25.

SELECT

필드명

FROM 테이블

WHERE 조건1

AND 조건2


이러한 SELECT 문으로 FUNCTION 을 만들어 보자


CREATE FUNCTION  "FUNCTION 명" (변수값1 타입 , 변수값2 타입) RETURN 타입

BEGIN


DECLARE 변수명 varchar(50); // 변수선언

// 아래에는 조회할 SELECT 문장

SELECT

CODE_NAME INTO 변수명  // 조회한 컬럼값인 CODE_NAME 을 변수에 넣는다.

FROM TB_CODE

WHERE CODE = '변수값1'

AND GRP_CODE= '변수값2'


RETURN 변수명


END



출처: https://choija.tistory.com/26 [수캥이의 삶 ]
]



/* seq_mysql 테이블 생성 */
 CREATE TABLE seq_mysql(
 
     id INT NOT NULL
 
     seq_name VARCHAR(50NOT NULL
 
 );
 
/* 생성된 펑션 삭제 */
 DROP FUNCTION IF EXISTS get_seq;
 
/* Auto_increment 적용 */
DELIMITER $$
 
CREATE FUNCTION get_seq (p_seq_name VARCHAR(45))
 
RETURNS INT READS SQL DATA
 
BEGIN
 
DECLARE RESULT_ID INT;
 
UPDATE seq_mysql SET id = LAST_INSERT_ID(id+1
 
 WHERE seq_name = p_seq_name;
 
SET RESULT_ID = (SELECT LAST_INSERT_ID());
 
RETURN RESULT_ID;
 
END $$
 
DELIMITER ;
 
/* 시퀀스 생성 */ 
INSERT INTO seq_mysql
 
 VALUES (0'boardSeq');
 
/* 시퀀스 삽입 */
get_seq('boardSeq')


MySQL 시퀀스 생성하여 사용하기 : 게시판 테이블에 시퀀스 기능 적용하기


1. 시퀀스 테이블을 만들어 시퀀스 번호 적용할 필드 (id)와 시퀀스의 이름 ( seq_name ) Attribute 지정


시퀀스 이름은 함수를 사용할 때 매개값으로 사용된다.



2. 시퀀스 테이블에 있는 값을 게시판 테이블에 가져다 쓰기위한 함수 작성


함수 get_seq 매개값은 p_seq_name 리턴타입은 int [ reads sql data ] 



begin

result_id 변수를 선언, 

함수 매개값에 시퀀스 테이블의 name속성이 올 때

id에 last_insert_id 함수 사용하여 테이블의 마지막 auto_increment값 리턴 <<?? 테이블에auto increment 적용 안했는데


쿼리를 읽어와서,

마지막으로 들어온 레코드에 id+1값을 set <<

return_id에 위의 set한 last_insert_id를 넣고,

return_id 리턴

end



사용할때는 함수이름 ( 테이블 컬럼 name ) // <<함수 매개값에 시퀀스 테이블의 name속성이 올 때









last_insert_id 함수는 테이블의 마지막 auto_increment 값을 리턴한다.

출처: https://cirius.tistory.com/1139 [바부의 세상살아가기]

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

MySQL sysdate / 현재 시각 입력  (0) 2019.08.13
[이것이 MySQL이다] 07. SQL 고급(1)  (0) 2019.07.25
MySQL 시퀀스 사용  (0) 2019.07.25
MySQL - DB/테이블 관리 기본 명령어  (0) 2019.07.23
뷰(view) 작성  (0) 2019.05.05