''带有函数的MySQL附近的奇怪错误

问题描述 投票:0回答:1

我问,因为我不知道错误在哪里。我需要在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

错误是什么?

mysql stored-functions
1个回答
0
投票

该错误是因为您使用了错误的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 ;
© www.soinside.com 2019 - 2024. All rights reserved.