|
실행환경 |
|
|
Desktop |
조립식 |
|
CPU |
Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz 3.40GHz |
|
Memory |
8.00 GB |
|
OS |
Windows 7 Professional K 64bit |
|
Java |
1.8.0_05 |
MySQL | Ver 14.14 Distrib 5.6.19, for Win64 |
함수 만들기
DELIMITER $$
DROP FUNCTION IF EXISTS `db_name.function_name`$$
CREATE FUNCTION `db_name.function_name`(stID int, endID int, line int) RETURNS int
DETERMINISTIC
BEGIN
Declare stOrd int;
declare endOrd int;
declare result int;
select ord into stOrd
from busstoplinelist
where BusLineID = line and BusStopID = stID;
select ord into endOrd
from busstoplinelist
where BusLineID = line and BusStopID = endID;
RETURN endOrd - stOrd;
END$$
DELIMITER ;
select function_name(421, 423, 1525);
DELIMITER : $$ 문장의 끝을 $$로 바꾸어준다는 뜻DETERMINISTIC : Link
예외 처리
delimiter $$
DROP PROCEDURE IF EXISTS db_name.procedure_name$$
CREATE PROCEDURE db_name.procedure_name(IN num INT, IN ch VARCHAR(2))
BEGIN
DECLARE err INT DEFAULT '0';
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET err = -1;
START TRANSACTION;
INSERT INTO table_name VALUES (num, ch); // 성공
INSERT INTO table_name VALUES (ch, num); // 실패
IF err < 0 THEN
ROLLBACK;
ELSE
COMMIT;
END IF;
END $$
delimiter ;
참고사이트 Link
'Database > MySQL' 카테고리의 다른 글
| [MySQL] utf-8 설정하기 (0) | 2014.09.03 |
|---|---|
| [MySQL] 오토커밋(autocommit) 상태 확인하기 (0) | 2014.09.01 |
| [MySQL] Error: could not open single-table tablespace file .\mysql\innodb_index_stats.ibd (0) | 2014.08.27 |
| [MySQL] 테이블 수정(컬럼명 변경, 컬럼추가, 삭제, 이동, 테이블 이름변경) (0) | 2014.08.25 |