IF, WHILE
과 같은 흐름 제어 명령문은 함수 또는 저장 프로 시저의 컨텍스트에서 실행해야합니다. 루프에서 mypro()
을 실행하려면 해당 동작 자체를 프로 시저로 만들어야합니다. 아래에서는 WHILE
루프에서 원래 저장 프로 시저를 호출하는 call_mypro_x10()
이라는 프로 시저를 만듭니다.
DELIMITER $$
CREATE PROCEDURE call_mypro_x10()
BEGIN
SET @x = 1;
WHILE @x <= 10 DO
CALL mypro();
SET @x := @x + 1;
END WHILE;
END$$
DELIMITER ;
그런 다음이 다른 하나 랩 프로 시저 호출 다음 DELIMITER
문은 모든 클라이언트에 필요하지 않을 수 있음을
CALL call_mypro_x10();
참고, 일부 MySQL의 클라이언트는 대체 구분을 지정하는 다른 방법을 제공 저장 프로 시저 및 함수 정의에 필요합니다. 명백하게 SQLyog supports DELIMITER
정상적인 쿼리 실행의 일부로 흐름 제어문을 허용하는 an open feature request이 있습니다.
이 코드는 함수 또는 저장 프로 시저에 래핑됩니까? 'WHILE'은 그 맥락에서 실행되어야합니다. –
아니요 그냥 쿼리가 작성된 쿼리 영역에 글을 쓰고 있습니다 – Shahzaib
단순히 mypro() 호출을 작성하면 올바르게 작동합니다. – Shahzaib