Я пытаюсь скомпилировать следующую функцию, но получаю много синтаксических ошибок. Какие ошибки я совершаю? Я что-то упускаю? Можем ли мы указать длину символов в возвращаемом типе?
create function generate_invoice_number(id int) returns varchar(11)
deterministic
begin
declare invoiceId varchar(11) default null;
/**
* Here id refers to the ID that is generated in the
* invoice table.
*/
if id is not null and id > 0
then
set invoiceId = concat('QUA-',lpad(id,7,'0'));
end if;
return invoiceId;
end;
Ошибки:
Код ошибки: 1064 У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с '' в строке 4 (занято 0 мс)
Код ошибки: 1064 У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса, который следует использовать рядом с «если id не равен нулю и id > 0, тогда установите invoiceId = concat('QUA-',lpad(id,7,' в строке 5 (0 мс взято)
Код ошибки: 1064 У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «концом, если» в строке 1 (занято 0 мс)
Код ошибки: 1064 У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «return invoiceId» в строке 1 (занято 0 мс)
Код ошибки: 1064 У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «концом» в строке 1 (занято 0 мс)
SQLYog
- person   schedule 02.08.2016delimiter
(хотя я не знаю, имеет ли это отношение к SQLYog). Извините, я не могу помочь вам больше, чем это. - person FDavidov   schedule 02.08.2016