2017-10-09 41 views
0

我想在MySQL中創建一個函數像這樣,補題我在是否存在線得到一個語法錯誤:創建MySQL中的函數,如果存在

我想我稍微做一些事情了作爲一個從MS SQL服務器進行翻譯的結果。

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

**更新

的解決方案,我發現基於答案從@SK Jajoriya

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; 

在你的情況下,if聲明沒有關閉

+0

這給了我一個返回「真」線語法錯誤。它強調真實,並說缺少分號。但是,添加分號並沒有幫助。 – dorien

+0

'其他'怎麼樣?到目前爲止沒有運氣。 – dorien

+1

我已更新答案 –

0

IF應完成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

我更新了答案,但無法通過手機進行測試 –