ошибка, когда я вызываю процедуру в mysql: Код ошибки: 1222. Используемые операторы SELECT имеют различное количество столбцов - PullRequest
0 голосов
/ 05 мая 2018
delimiter /
drop procedure if exists piez_vend;/
create procedure piez_vend (IN _piez varchar(20), out nvend int(11))
begin
SELECT numpieza, count(numvend) into nvend from preciosum where numpieza like _piez;
end
/
delimiter ;

call piez_vend('dd-0001-210',@nvend);

Пример данных

 numpieza, numvend, preciounit, diassum, descuento
'a-1001-l', '1', '1.60', '3', '0'
'a-1001-l', '3', '3.00', '1', '0'
'c-400-z', '1', '7.80', '4', '5'
'c-400-z', '6', '6.50', '3', '0'
'dd-0001-210', '1', '300.00', '3', '15'
'dd-0001-210', '2', '310.00', '5', '12'
'dd-0001-210', '4', '287.00', '15', '10'
'm-0001-c', '1', '550.00', '3', '10'
'm-0001-c', '5', '570.00', '7', '15'
't-0002-at', '2', '25.80', '3', '0'
't-0002-at', '4', '27.00', '5', '7'

1 Ответ

0 голосов
/ 05 мая 2018

Сообщение об ошибке немного тупо.

Используемые операторы SELECT имеют разное количество столбцов

Это означает, что запрос

SELECT numpieza, count(numvend) into nvend from preci...

не работает, потому что SELECT упоминает два столбца. Но вы используете into, чтобы сообщить MySQL, куда поместить значение только одного из столбцов. Он не знает, что делать с другим столбцом. Попробуйте вместо этого.

SELECT count(numvend) into nvend from preci...

Pro tip Хранимые процедуры сложно отладить. Полезно попробовать запросы в них, прежде чем заключать их в процедуру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...