2015-10-14 116 views
0

我必須在mysql中創建一個返回整數的函數。 sql解釋器不斷告訴我,我的語法有問題。我把它看得儘可能好,並嘗試了一堆東西,但我無法弄清楚。麻煩mySql函數

CREATE FUNCTION no_of_paintings_exhibited (exhibition_name VARCHAR(45)) 
RETURNS INT 

BEGIN 
    DECLARE number_of_paintings INT; 

    SELECT 
    COUNT(*) 
    INTO number_of_paintings 
    FROM Exhibition, Shown_at, Painting 
    WHERE name = exhibition_name AND Painting.id_no = Shown_at.art; 

    RETURN number_of_paintings; 

END; // 

錯誤輸出:

mysql> CREATE FUNCTION no_of_paintings_exhibited (exhibition_name VARCHAR(45)) 
-> RETURNS INT 
-> 
-> BEGIN 
->   DECLARE number_of_paintings INT; 

ERROR 1064 (42000): 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 5 
+0

請仔細試試這個'DECLARE number_of_paintings INT;設置number_of_paintings = 0; ' – makdu

+0

我嘗試添加一個默認值並使用集合表達式。沒有骰子:( – user3538411

+0

你可以檢查'FROM Exhibition,Shown_at,Painting'語句 – makdu

回答

0
CREATE FUNCTION no_of_paintings_exhibited (exhibition_name VARCHAR(45)) 
RETURNS INT 

BEGIN 
    DECLARE number_of_paintings INT; 
set number_of_paintings=0; 
    SELECT 
    COUNT(*) 
    as number_of_paintings 
    FROM Exhibition ex, Shown_at shat, Painting ptng 
    WHERE ex.name = exhibition_name AND ptng.id_no = shat.art; 

    RETURN number_of_paintings; 

END; 
0

您收到此錯誤,因爲你沒有設置分隔符,默認情況下分號(;)是分隔符,一旦發現它嘗試執行的第一個分號並引發此錯誤

執行如下操作(在創建函數之前將分隔符設置爲$$或//,下面我使用$$),然後再次在函數創建後設置DELIMITER到sem我冒號。

DELIMITER $$ 
CREATE FUNCTION ... 
.. 
END; 
$$ 
DELIMITER ;