使用函数插入记录或返回ID值

时间:2016-06-28 20:18:59

标签: mysql

我在设置此功能时遇到问题,以检查是否存在外键记录。

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

附近使用正确的语法

1 个答案:

答案 0 :(得分: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 这样的工具来突出显示错误并一次修复一个错误。