Stored Program
warning
;
은 mysql 에서 명령을 구분하는 기호로 인식하는 데, Stored Program에서 프로그램을 정의하기 위해서도 ;
을 사용하므로 일시적으로 DELIMITER $$
명령을 통해 구분자를 ;
에서 $$
로 변경해야 합니다.
프로그램 정의가 끝난 후엔 다시 ;
로 변경해야 합니다.
PROCEDURE
CREATE PROCEDURE
DELIMITER $$
CREATE PROCEDURE <func>(
[<param> <type>[,<param> <type>]]
)
BEGIN
<statement>;
[<statement>;]
END
$$
DELIMITER ;
DROP PROCEDURE
DROP PROCEDURE <func>
CALL PROCEDURE
CALL <func>([<arg>[,<arg>]])
DECLARE
warning
Local variable
-> CURSOR
-> HANDLER
순으로 선언해야 합니다.
DECLARE Local variable
DECLARE <var>[,<var>] ... <type> [DEFAULT <value>]
DECLARE CURSOR
DECLARE <cursor> CURSOR FOR <select_statement>
OPEN <cursor>;
FETCH <cursor> INTO <var>[,<var>];
CLOSE <cursor>;
DECLARE HANDLER
DECLARE <action> HANDLER FOR <condition>[,<condition>]
<statement>
LOOP
CREATE PROCEDURE test()
BEGIN
DECLARE tn, ts VARCHAR(50);
DECLARE done INT DEFAULT FALSE;
DECLARE cur CURSOR FOR SELECT table_name, table_schema FROM information_schema.tables;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur;
read_loop: LOOP
FETCH cur INTO tn, ts;
IF done THEN
LEAVE read_loop;
END IF;
SELECT tn, ts;
END LOOP;
CLOSE cur;
END