@wb_by
Учусь

Что исправить в моей процедуре?

Пытаюсь создать процедуру в phpMyAdmin:

DELIMITER $$
CREATE DEFINER=`root`@`localhost` 
PROCEDURE `GET_EMPLOYEES_WITH_SALARY_MORE_THAN`(IN `target_salary` INT, OUT `counter` INT) 
DETERMINISTIC 
CONTAINS SQL 
SQL SECURITY DEFINER 
BEGIN
DECLARE id integer;
DECLARE name, tel varchar(255);
DECLARE acceptanceDate, dismissalDate DATE;
DECLARE salary integer DEFAULT 0;
DECLARE counter integer DEFAULT 0;
Declare done integer DEFAULT 0;
CREATE TEMPORARY TABLE temp LIKE employees;
DECLARE employeeCursor CURSOR FOR SELECT * FROM employees;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1;
Open employeeCursor;
WHILE done = 0 DO
  FETCH employeeCursor INTO id, name, tel, acceptanceDate, dismissalDate;
  SET @p0 = id; 
  CALL `GET_SALARY`(@p0, @p1); 
  SELECT @p1 INTO salary;
  if (salary >= target_salary) then
  	INSERT INTO temp SET `idEmployee` = id, `name` = name, `tel` = tel, `acceptanceDate` = acceptanceDate, `dismissalDate` = dismissalDate);
    SET counter = counter + 1; 
  end if;
END WHILE;
Close employeeCursor;
SELECT * FROM temp;
END$$
DELIMITER ;


Выдает ошибку:
#1064 - У вас ошибка в запросе. Изучите документацию по используемой версии MariaDB на предмет корректного синтаксиса около 'DECLARE employeeCursor CURSOR FOR SELECT * FROM employees; DECLARE CONTINUE HAN'
на строке 14

В чем проблема?
  • Вопрос задан
  • 113 просмотров
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Перед процедурой
DELIMITER $$
В конце процедуры
END $$
DELIMITER ;

Иначе первую встреченную точку с запятой MySQL воспринимает как завершение команды CREATE PROCEDURE
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы