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