ストアドプロシジャのメモ(1)

忘れてたのでメモ

DELIMITER //
DROP PROCEDURE IF EXITS sp_foo
// 
CREATE PROCEDURE sp_foo()
BEGIN
   DECLARE done INT DEFAULT 0;
   DECLARE _username    VARCHAR(45);
   DECLARE _birth_date  DATE;
  
   DECLARE cur CURSOR FOR 
      SELECT id, username, birth_date 
      FROM members 
      ORDER BY username ASC ;
   DECLARE EXIT HANDLER FOR NOT FOUND SET done = 0;
   DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1; 
  
   OPEN cur;
   REPEAT
   FETCH cur INTO _id, _username, _birth_date ;
      IF NOT done THEN

        INSERT INTO temp_member ( uname, b_date )
        VALUES ( _username, _birth_date );

      END IF ;
   UNTIL done END REPEAT ;
   
   CLOSE cur;

   SELECT NOT();
END
//

DELIMITER ;

==============================
実行は、 call sp_foo ;