CREATE FUNCTION FC_IDKRITERIA()
RETURNS CHAR(3)
AS
BEGIN
DECLARE @MAX INT , @KODEBARU CHAR(3)
SELECT @MAX = MAX (RIGHT(IDKRITERIA,2)) FROM KRITERIA
IF @MAX IS NULL
SET @MAX = 0
SET @KODEBARU = 'K' + RIGHT('0'+CONVERT(VARCHAR(3),@MAX+ 1) ,2)
RETURN @KODEBARU
END
ответ
Каждое заявление в процедуре должно заканчиваться на ;
. Чтобы это не прекращало определение функции, используйте команду DELIMITER
, чтобы изменить разделитель команд на что-то еще.
И при выполнении переменной назначения в пункте SELECT
вы должны использовать :=
.
В начале определения функции нет AS
.
Вы не объявляете переменные, которые начинаются с @
.
Вам необходимо THEN
и END IF
в сообщении IF
.
Чтобы объединить строки, используйте CONCAT()
, а не +
.
У вас есть аргументы CONVERT()
в неправильном порядке, и VARCHAR(3)
не является допустимым аргументом типа, он должен быть CHAR(3)
.
В функции вы не можете использовать оператор SELECT
на верхнем уровне, потому что это означает возврат результирующего набора, а функции могут возвращать только одно значение. Поэтому вам необходимо назначить @MAX
из выражения (SELECT ...)
.
DELIMITER $$
CREATE FUNCTION FC_IDKRITERIA() RETURNS CHAR(3)
BEGIN
SET @MAX = (SELECT MAX (RIGHT(IDKRITERIA,2)) FROM KRITERIA);
IF @MAX IS NULL
THEN SET @MAX = 0;
END IF;
SET @KODEBARU = CONCAT('K', RIGHT('0'+CONVERT(@MAX+ 1, CHAR(3)) ,2));
RETURN @KODEBARU;
END;
$$
DELIMITER ;
++ приятный. Также как консультация: мне нужно проверить репутацию пользователя, прежде чем вносить свой голос в таблицу «Голоса». Так что я должен делать это * (проверка) * в ** стороне базы данных ** * (с помощью триггера) * или ** на стороне сервера ** * (выборка пользовательской репутации при регистрации и установке ее на сеанс, а затем использование этого сеанс для проверки) *? – Shafizadeh
@Shafizadeh У вас есть ответ на ваш вопрос: http://stackoverflow.com/questions/37096493/checking-users-reputation-by-php-vs-mysql/37097408#37097408 – Barmar
Да, вы правы ..! Thx для вашего внимания. Кстати, я действительно застрял на [этой проблеме] (http://stackoverflow.com/questions/37160002/how-do-i-check-a-few-conditions-before-updating). Честно говоря, я смущен, когда ты снова звонишь. Но я обещаю, что это последнее. Поэтому, если у вас есть свободное время, взгляните на него. – Shafizadeh
- 1. PHP Ошибка MySQL Синтаксис
- 2. MySQL Ошибка синтаксис
- 3. PHP синтаксис MYSQL ошибка
- 4. mysql if Синтаксис ОШИБКА
- 5. MySQL синтаксис Ошибка версии
- 6. Синтаксис синтаксиса MYSQL Ошибка
- 7. Почему ошибка? Синтаксис Функция Rand
- 8. Синтаксис обновления Mysql Python Ошибка
- 9. Ошибка ввода MYSQL - Синтаксис правильный?
- 10. mysql синтаксис ошибка проверка руководство
- 11. PHP MySQL случай синтаксис ошибка
- 12. Ошибка MySQL 1064 - правильный синтаксис?
- 13. MySQL ошибка хранимая процедура @ Синтаксис
- 14. Ошибка обновления запроса MySQL, синтаксис?
- 15. MySQL и синтаксис PHP ошибка
- 16. ошибка MySQL синтаксис при вставке
- 17. ошибка Mysql синтаксис оператора выбора
- 18. функция MySQL возвращение ошибка
- 19. mysql функция синтаксическая ошибка
- 20. Неопределенная функция, MYSQL ошибка
- 21. Функция Синтаксис
- 22. javascript функция не определено ошибка. Синтаксис?
- 23. Угловая ошибка: синтаксис $ синтаксис Синтаксис Ошибка
- 24. Ошибка: синтаксис $ синтаксиса Синтаксис Ошибка
- 25. MySQL: синтаксис, синтаксис, синтаксис ...... слишком трудно найти
- 26. PHP MySQL INSERT синтаксис оператора ошибка
- 27. MYSQL Error # 1064 Ошибка в SQL Синтаксис
- 28. Узел Ошибка JS Parse в MySQL Синтаксис
- 29. Mysql ошибка запроса SQL синтаксис PDO
- 30. Ошибка MySQL Inner Join Query Синтаксис
Вам не хватает ';' в конце каждого утверждения. – Barmar