Notice
Recent Posts
Recent Comments
Link
- Arawn's Dev Blog
- Outsider's Dev Story
- Toby's Epril
- Benelog
- NHN 개발자 블로그
- SK 플래닛 기술 블로그
- OLC CENTER
- 소프트웨어 경영/공학 블로그
- 모바일 컨버전스
- KOSR - Korea Operating System …
- 넥스트리 블로그
- 리버스코어 ReverseCore
- SLiPP
- 개발자를 위하여... (Nextree 임병인 수석)
- "트위터 부트스트랩: 디자이너도 놀라워할 매끈하고 직관…
- Learning English - The English…
- real-english.com
- 'DataScience/Deep Learning' 카테…
- Deep Learning Summer School, M…
- Deep Learning Courses
민서네집
UPPER ID로 최상위노드 찾아가는 MySQL Function 본문
-- mo 이름을 가져오기 위한 function. 최상위 노드의 MO_NAME 컬럼값을 가져온다. DELIMITER $$ DROP FUNCTION IF EXISTS ntelsdm.fn_mo_name; CREATE FUNCTION fn_mo_name(param_mo_id INTEGER) RETURNS TEXT READS SQL DATA BEGIN DECLARE _id INTEGER; DECLARE _parent INTEGER; DECLARE _mo_name TEXT; DECLARE _count INT DEFAULT 0; DECLARE done INT DEFAULT FALSE; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; SET _parent := NULL; SET _id := param_mo_id; the_loop: LOOP SELECT UPPER_MO_ID, MO_NAME INTO _parent, _mo_name FROM T_MO WHERE MO_ID = _id; SET _count = _count + 1; IF _parent = 0 THEN return _mo_name; END IF; SET _id := _parent; IF _parent IS NULL THEN RETURN NULL; END IF; IF done=TRUE THEN LEAVE the_loop; END IF; -- UPPER_MO_ID 가 잘못되서 무한루프 도는 것을 방지하기 위한 코드 IF _count > 20 THEN RETURN '* ERROR *'; END IF; END LOOP the_loop; RETURN NULL; END $$ DELIMITER ;
<주의!>
파라미터 이름이 Function 안의 SQL의 컬럼 이름과 같으면 쿼리가 오동작함.
'Database > MySQL' 카테고리의 다른 글
[MySQL] LAST_INSERT_ID( expr ) 의 사용, Sequence 흉내내기. (0) | 2013.06.20 |
---|---|
CODE NAME 을 반환하는 MySQL Function (0) | 2013.06.07 |
SQL state [HY000]; error code [1030]; Got error -1 from storage engine (0) | 2013.05.21 |
MySQL - selectKey 사용하기 (0) | 2013.05.09 |
MySQL - AUTOCOMMIT 여부 확인하기 (2) | 2013.05.09 |
Comments