0

構文でエラーが発生している場所がわかりません.MySqlは、不明なシステムが確実に完了したと言っています:区切り文字 |

CREATE PROCEDURE UPDATELOMON ()    
BEGIN 

  DECLARE First_cur CURSOR FOR SELECT oraginal_level,level FROM LOMTEMP;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done := TRUE;

  OPEN First_cur;

  FirstLoop: LOOP
  FETCH First_cur INTO oraginal,toupdate;
  IF done THEN
  LEAVE FirstLoop;
  END IF;

  CALL updt(oraginal,toupdate);
  END LOOP FirstLoop;

  CLOSE First_cur;

END;
4

2 に答える 2

1

STORED PROCEDURE を作成するときは、区切り文字を変更する必要があります。

DELIMITER $$

DROP PROCEDURE IF EXISTS UPDATELOMON$$
CREATE PROCEDURE UPDATELOMON ()    
BEGIN 

  DECLARE First_cur CURSOR FOR SELECT oraginal_level,level FROM LOMTEMP;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done := TRUE;

  OPEN First_cur;

  FirstLoop: LOOP
  FETCH First_cur INTO oraginal,toupdate;
  IF done THEN
  LEAVE FirstLoop;
  END IF;

  CALL updt(oraginal,toupdate);
  END LOOP FirstLoop;

  CLOSE First_cur;

END$$
DELIMITER ;

デフォルトでは、MySQL 自体がセミコロンをステートメント区切り文字として認識するため、一時的に区切り文字を再定義して、MySQL が格納されたプログラム定義全体をサーバーに渡すようにする必要があります。それ以外の場合、MySQL は END ステートメントに到達する前に CREATE PROCEDURE を中断します (最初のセミコロン、この場合は CONTINUE HANDLER ステートメントの前)。

詳細については、ドキュメントを参照してください: http://dev.mysql.com/doc/refman/5.5/en/stored-programs-defining.html

于 2013-10-03T12:38:06.273 に答える