2016-06-28 6 views
0

外部キーレコードが存在するかどうかをチェックするためにこの関数を設定する際に問題があります。関数を使用してレコードを挿入するかID値を返す

CREATE FUNCTION find_city(NAME VARCHAR) RETURNS INT 
BEGIN 
    # initilize variables 
    DECLARE ID_FOUND INT DEFAULT 0; 

    -- Declare variable to hold results 
    ID_FOUND = SELECT city_id FROM city WHERE city_name = NAME; 

    -- If records are returned? 
    CASE 
     -- Return the foreign key ID found 
     WHEN ID_FOUND >= 1 THEN RETURN ID_FOUND 
     -- Insert new record into table 
     ELSE INSERT INTO `donorsearch`.`city` (`city_name`) VALUES (NAME); 
    END 
END// 

PHPMyAdminでデバッグしようとしましたが、問題の内容が不明です。

エラーメッセージ:#1064 - SQL構文にエラーがあります。あなたのMariaDBサーバのバージョンに対応するマニュアルをチェックして、近くの構文を使用してください。 ')RETURNS INT

+0

エラーメッセージは何ですか? – Jocelyn

+0

私はちょうどその投稿にエラーメッセージを含めました。 –

+0

何をしようとしていますか? – Strawberry

答えて

0

あなたの関数には多くのエラーがありました。

delimiter // 
CREATE FUNCTION find_city(NAME VARCHAR(100)) RETURNS INT 
BEGIN 
    DECLARE ID_FOUND INT DEFAULT 0; 

    SET ID_FOUND = (SELECT city_id FROM city WHERE city_name = NAME); 

    IF ID_FOUND > 0 THEN 
     RETURN ID_FOUND;   
    ELSE 
     INSERT INTO `donorsearch`.`city` (`city_name`) VALUES (NAME); 
    END IF; 
END 
// 

エラーを強調表示し、それらを一つずつ修正するのMySQL Workbenchののようなツールを使用してください。

関連する問題