MySQL创建函数失败

标签 mysql sql function

这个

CREATE FUNCTION getTagID(tag VARCHAR(100)) RETURNS BIGINT

BEGIN
DECLARE tagID BIGINT;
            SET tagID = (SELECT id FROM tags WHERE text = tag);
IF tagID IS NULL
THEN
            (INSERT INTO tags (text) VALUES (tag));
            SET tagID = (SELECT LAST_INSERT_ID());
END IF;
RETURN tagID;
END

失败并显示

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 4

为什么?

此函数与此处的问题相关:

mysql insert if not exists on joined tables

最佳答案

尝试更改 DELIMITER 并删除 INSERT 语句两边的括号。

DELIMITER $$
CREATE FUNCTION getTagID(tag VARCHAR(100)) 
RETURNS BIGINT
BEGIN
    DECLARE tagID BIGINT;
    SET tagID = (SELECT id FROM tags WHERE text = tag);
    IF tagID IS NULL THEN
        INSERT INTO tags (text) VALUES (tag); -- don't put inside parenthesis
        SET tagID = (SELECT LAST_INSERT_ID());
    END IF;
    RETURN tagID;
END $$
DELIMITER ;

关于MySQL创建函数失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15548492/

相关文章:

mysql - 我的 mysql 触发器发生了严重的故障是什么?

php - Laravel 查询 : BadMethodCallException in Builder. php 行 2258:

mysql - 学校考勤系统的数据库设计

mysql - 帐单地址 WooCommerce 数据库表

mysql - MySQL 或 SQLite 是否支持 'INSERT OR UPDATE' 语句?

ajax - 如何在ajax调用中使用wordpress函数

sql - Access SQL : Nz() Function executed From VBD

sql - 连接分组的行

python - 汉诺塔非递归函数

function - 函数 ‘array’没有IMPLICIT类型