Пишу на mysql 5 Хранимую функцию Проверка если такая запись в таблице Есть вернуть ее айди.. если нет то я так поимаю вернет ноль. Но выдается ошибка если задаю запись которой нет в базе то пишет Result consisted of more than one row если задаю запись имеющуюся в базе то пишет date too long for column 'tex7' at row 1 DELIMITER $$ DROP FUNCTION IF EXISTS `news`.`rows_autor`$$ CREATE DEFINER=`root`@`localhost` FUNCTION `rows_autor`(tex7 varchar(200)) RETURNS int(11) BEGIN DECLARE rows_a INT; SELECT autor.id INTO rows_a FROM autor WHERE name_autor='tex7'; RETURN rows_a; END$$ DELIMITER ; подскажите что делать
В Oracle есть такая весчь как обработка исключительных ситуаций EXCEPTION, возможно такое есть и в MySql. Так же может возникнуть ошибка если запрос вернет больше чем одну запись.
Если метода подобного EXCEption нет тогда сперва подсчитываем количество удовлетворяющих условию записей [sql]Select count(autor.id ) INTO rows_a FROM autor WHERE name_autor='tex7'; If rows_a=0 Return rows_a; Else SELECT autor.id INTO rows_a FROM autor WHERE name_autor='tex7'; --Вот здесь может возникнуть ошибка если запрос вернет больше чем одну запись... RETURN rows_a; end;[/sql]
Блин, ну вот для чего на форуме добавлены кнопки php, sql, js, css, html кода? И даже просто кнопка "Code" есть на крайний случай...
Он конечно поможет, но если нужен другой id из возвращенного результата? В итоге мне не совсем понятно предназначение данной функции если только поле name_autor не является уникальным.