Странная ошибка рядом с MySQL с функцией

107
5

Я спрашиваю, потому что я не знаю, где ошибка. Мне нужно создать функцию в MySQL. Я использую PhpMyAdmin.

CREATE FUNCTION 'aggiungiPermesso'(matricolaUtenteLoggato VARCHAR(20),nomeNuovoPermesso VARCHAR(20),descrizioneNuovoPermesso VARCHAR(250)) RETURNS VARCHAR(150)
BEGIN
DECLARE hapermesso INT;
SELECT COUNT(*) INTO hapermesso FROM ottiene WHERE matricolaUtenteLoggato = ottiene.Matricola AND ID =(SELECT id FROM permesso WHERE Nome = 'Aggiungi permesso')
IF(hapermesso < 1) BEGIN
RETURN 'Errore. Non hai i permessi.';
END
INSERT INTO 'permesso'('ID','Nome', 'Descizione') VALUES(0,nomeNuovoPermesso,descrizioneNuovoPermesso) RETURN 'Nuova operazione aggiunta con successo.';
END
DELIMITER;

Ошибка

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3

Какая ошибка?

спросил(а) 2021-01-25T08:45:42+03:00 4 месяца, 2 недели назад
1
Решение
110

Ошибка была связана с тем, что вы использовали неправильный синтаксис для Return и IF. Я скорректировал ваш запрос, и теперь он отлично работает.

DELIMITER $$

CREATE FUNCTION 'aggiungiPermesso'(matricolaUtenteLoggato VARCHAR(20),nomeNuovoPermesso VARCHAR(20),descrizioneNuovoPermesso VARCHAR(250)) RETURNS VARCHAR(150) CHARSET latin1
BEGIN
DECLARE hapermesso INT;
SELECT COUNT(*) INTO hapermesso FROM ottiene
WHERE matricolaUtenteLoggato = ottiene.Matricola AND ID =(SELECT id FROM permesso WHERE Nome = 'Aggiungi permesso');
BEGIN RETURN IF(hapermesso > 1,'Errore. Non hai i permessi.','None');
END;
INSERT INTO 'permesso'('ID','Nome', 'Descizione')
VALUES(0,nomeNuovoPermesso,descrizioneNuovoPermesso);
RETURN 'Nuova operazione aggiunta con successo.';
END$$

DELIMITER ;

ответил(а) 2021-01-25T08:45:42+03:00 4 месяца, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема