@SomeManEa

Почему мне пишет error code:1328 Incorrect number of FETCH variables?

Мне нужно присвоить значение цены, которая найдется в таблице минимальной цене, если цена ниже, либо максимальной, если цена выше.
Но у меня выдает ошибку, ничего не понимаю, что мне нужно сделать?

таблица services
CREATE TABLE `services` (
  `id_service` int(11) unsigned NOT NULL,
  `name_ser` char(40) NOT NULL,
  `price` int(5) unsigned NOT NULL,
  `date_give` date DEFAULT NULL,
  `date_get` date DEFAULT NULL,
  `ser_type` int(10) NOT NULL,
  PRIMARY KEY (`id_service`),
  KEY `prod` (`price`),
  KEY `cena` (`price`),
  KEY `servis_to_sertype` (`ser_type`),
  CONSTRAINT `servis_to_sertype` FOREIGN KEY (`ser_type`) REFERENCES `sertype` (`ser_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


то, что мне нужно сделать
DELIMITER //
CREATE DEFINER = 'root'@'localhost' FUNCTION getTypes(idstup INT) 
RETURNS int
BEGIN 
      declare prices,minprice,maxprice INT; 
      DECLARE is_end INT DEFAULT 0; 
    DECLARE id_curs CURSOR FOR SELECT * FROM services; 
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET is_end=1; 
    set prices:=(select price from services where services.id_service=idstup);
    set minprice = 5000;
    set maxprice = 15000;
  OPEN id_curs;   
     FETCH id_curs INTO prices,minprice,maxprice;  
     WHILE is_end=0 DO 
       IF (prices>maxprice) then set prices=maxprice;
       if (prices<minprice) then set prices = minprice;   
SET is_end=1; 
END IF; 
end if;
   FETCH id_curs INTO prices,minprice,maxprice;
   END WHILE; 
   return prices;
CLOSE id_curs; 
END //


Заполненая таблица services
5fe5a9dc4f279612217619.jpeg
  • Вопрос задан
  • 20 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT * FROM services
INTO prices,minprice,maxprice
То есть, вы пытаетесь шесть полей записать в три переменные.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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