2017-12-25 6 views
0

私はどこにエラーがあるかわからないので尋ねます。 MySQLで関数を作成する必要があります。私はPhpMyAdminを使用しています。関数のあるMySQLの近くに奇妙なエラーがあります

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 

のですか?

+0

区切り文字はどこで設定しますか? – Shadow

+0

最後の行ですが、最初の行でも設定できます...変更はありません... 区切り文字をどこに設定する必要がありますか? –

+0

関数の仕様の前に区切り記号**をsg elseに変更しないと、デフォルトのままになります。あなたのエラーが来ます。 – Shadow

答えて

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 ; 
+0

ありがとうございます。エディタはすべての ';'しかし実行する... bah –

+0

問題はありません。楽しむ – user3454116

+0

いいえ、間違った区切り文字の設定が原因です。残りは単なるボーナスです。 – Shadow

関連する問題