2017-03-21 11 views
0

IF EXISTS THENを使用して値が存在しない場合は、テーブルに挿入しようとしています。毎回私はMysqlでIF ELSE文を作成する正しい方法

エラー(1064)SELECT THEN「()TT '(タグからWHERE Tag.Tag = SELECT * EXISTS)IFをBEGIN' を持って、このクエリに

DELIMITER // 
CREATE PROCEDURE addnTag 
BEGIN 
IF (EXISTS (SELECT * FROM Tag WHERE Tag.Tag = 'tt')) 
THEN SELECT -1; 
ELSE 
INSERT INTO Tag(Tag) VALUES('tt') 
SELECT last_insert_id(); 
END IF; 
END// 
DELIMITER ; 

を実行してみてください-1; ELSE 'at line 2'

私のクエリのどこにエラーが見つかりません。

私を助けてください。ありがとう。

+0

ルックを再び –

+0

(PROCEDURE addnTagをCREATE試してみてください)。 –

答えて

1

プロシージャ名の後にカッコがありません。INSERTの後にセミコロンがあると思います。

これは動作するはずです:[構文IF](https://dev.mysql.com/doc/refman/5.7/en/if.html)で

DELIMITER // 
CREATE PROCEDURE addnTag() 
BEGIN 
IF (EXISTS (SELECT * FROM Tag WHERE Tag.Tag = 'tt')) 
THEN 
    SELECT -1; 
ELSE 
    INSERT INTO Tag(Tag) VALUES('tt'); 
    SELECT last_insert_id(); 
END IF; 
END// 
DELIMITER ; 
1

Hello_

私はこの構文でエラーが出ていない:

DELIMITER // 
DROP PROCEDURE IF EXISTS addnTag // 
CREATE PROCEDURE addnTag() 
BEGIN 
IF (EXISTS (SELECT * FROM Tag WHERE Tag.Tag = 'tt')) 
THEN SELECT -1; 
ELSE 
INSERT INTO Tag(Tag) VALUES('tt'); 
SELECT last_insert_id(); 
END IF; 
END // 
DELIMITER ; 

あなたは、関数の宣言とあなたのINSERT文の最後にセミコロンに()を欠落していました。

関連する問題