2017-06-19 21 views
0
DELIMITER // 
CREATE FUNCTION `f_media`(
    `f_Date` DATE, 
    `f_mediaexposure` VARCHAR(30), 
    `f_sentiment` VARCHAR(30) 
) 
RETURNS INT(10) 
BEGIN 
    DECLARE v_result INT; 

    SELECT v_result := COUNT(*) 
    FROM media_1 
    WHERE Mediumcat LIKE '%f_mediaexposure%' AND 
     Date = f_Date AND 
     sentiment = f_sentiment; 
    RETURN v_result 
END;// 

DELIMITER ; 

這對我不起作用。任何人都知道我做錯了什麼?只是SQL中的初學者。已經嘗試了分隔符,但仍然沒有運氣。創建函數時,請在SQL中收到此錯誤。固定?

1064 - 爾是IETS FOUT在德gebruikte語法BIJ ':= COUNT(*)FROM WHERE Mediumcat LIKE media_1 '%f_mediaexposure%' 一個' 在蔥10

+2

*請收到此錯誤* ......哪一個? –

+0

請參考前面發佈的這個問題https://stackoverflow.com/questions/6740932/mysql-create-function-syntax –

+0

你錯過了每個單獨的語句和函數創建前後的分隔符更改後的分號 – Shadow

回答

0

我的猜測是,你需要:

  • delimiter
  • :=
  • 修復括號。

此外,你應該命名您使用更明確的參數,並使用分號:

DELIMITER // 
CREATE FUNCTION `f_media`(
    `f_Date` DATE, 
    `f_mediaexposure` VARCHAR(30), 
    `f_sentiment` VARCHAR(30) 
) 
RETURNS INT(10) 
BEGIN 
    DECLARE v_result INT; 

    SELECT COUNT(*) INTO v_result 
    FROM media_1 
    WHERE Mediumcat LIKE '%f_mediaexposure%' AND 
      Date = f_Date AND 
      sentiment = f_sentiment; 
    RETURN v_result 
END;// 

DELIMITER ; 
+0

感謝您的提示!可悲的是,它仍然給我這個錯誤:1064 - 呃是iets fout in de gebruikte語法bij':= COUNT(*) FROM media_1 WHERE Mediumcat LIKE'%f_mediaexposure%'AN'in regel 10 –

+0

'SELECT v_result:= COUNT (*)'看起來不是一個有效的語法。一種選擇是更改爲'SELECT COUNT(*)INTO v_result',至少在一個函數中。 – wchiquito

+0

@wchiquito非常感謝你!它現在已經編譯完成。 –