Почему весь этот код?Используйте это:
CREATE FUNCTION getVendorID(IN venname VARCHAR(255))
RETURNS INT
BEGIN
RETURN (SELECT vendorid FROM vendors WHERE vendorname LIKE venname LIMIT 1);
END$$
Также обратите внимание на введение od LIMIT 1
.Ваш код взорвется, если будет найдено несколько поставщиков;Вы не можете поместить vendorid из нескольких строк в одну переменную.
Вы можете рассмотреть возможность автоматического переноса с %
в качестве услуги для вызывающих абонентов: WHERE vendorname LIKE CONCAT('%', venname, '%')