2017-10-09 15 views
0

が存在する場合は、TIが存在する場合はラインで構文エラーを取得してい府でMySQLで関数を作成:私はそうのようにMySQLの中で関数を作成しようとしています

は、私は私のように少し離れ何かをやっていると思いますMS SQL Serverからの翻訳結果。

CREATE FUNCTION MyFunction(input_field INTEGER) 
RETURNS VARCHAR(5) 
BEGIN 
    IF EXISTS (SELECT * FROM Teaches WHERE courseid = input_field) 
    RETURN 'True' 
    RETURN 'false' 
END; 

** UPDATE

私はあなたの場合は

DELIMITER $$ 
CREATE FUNCTION MyFunction2(input_field INTEGER) 
    RETURNS VARCHAR(5) 
BEGIN 
    IF EXISTS (SELECT * FROM Teaches WHERE courseid = input_field) THEN 
     RETURN 'True'; 
    ELSE 
      RETURN 'False'; 
    END IF; 
END $$ 
+0

のですか? – waka

答えて

1
CREATE FUNCTION MyFunction(input_field INTEGER) 
    RETURNS VARCHAR(5) 
BEGIN 
    IF EXISTS (SELECT * FROM Teaches WHERE courseid = input_field) THEN 
     RETURN 'True' 
    ELSE 
      RETURN 'false' 
    END IF; 
END; 

@SK Jajoriyaからの回答をもとに、if文はIF

+0

これは、返信 'True'行に構文エラーを表示します。それは真実を強調し、セミコロンがないと言う。ただし、セミコロンを追加しても効果はありません。 – dorien

+0

「else」はどうですか?今まで運がない。 – dorien

+1

私は答えを –

0

を閉じないことが判明ソリューション終了する必要がありますEND IF https://dev.mysql.com/doc/refman/5.7/en/if.html しかし、あなたの場合には、それはここ

CREATE FUNCTION MyFunction(input_field INTEGER) 
RETURNS VARCHAR(5) 
BEGIN 
    DECLARE res VARCHAR(5); 
    SET res = IF(EXISTS (SELECT 1 FROM Teaches WHERE courseid = input_field LIMIT 1),'true','false'); 
    RETURN res; 
END; 

の方が良いですが、正確に、エラーメッセージは何フィドル https://www.db-fiddle.com/f/uFkXXDpqVjn6AjYkXx3EYM/0

+0

で終わるこれは文法エラーです。それは真偽を返しますか? – dorien

+0

ああ、これは関数なので忘れてしまったので、RETURN文を処理する必要があります。 –

+0

私は答えを更新しましたが、電話からテストできません –

関連する問題