0

我创建了一个mysql函数:

DELIMITER $$
USE `local_sysDB`$$
CREATE FUNCTION  `addPost` (
    postSource CHAR(20),
    hashtagId INT,
    coordinatesLat FLOAT,
    coordinatesLon FLOAT,
    created INT(20) UNSIGNED,
    filterlevel VARCHAR(45),
    postId CHAR(20),
    postLanguage CHAR(11),
    profanity TINYINT(1),
    retweeted TINYINT(1),
    postText TEXT,
    truncated TINYINT(1),
    userId INT(10),
    username CHAR(15),
    userFullname CHAR(20),
    media VARCHAR(255),
    mediaType1 CHAR(5),
    media1 VARCHAR(255),
    mediaType2 CHAR(5),
    media2 VARCHAR(255),
    mediaType3 CHAR(5),
    media3 VARCHAR(255),
    mediaType4 CHAR(5),
    media4 VARCHAR(255),
    filter VARCHAR(45),
    urlToPost VARCHAR(225),
    channelTitle VARCHAR(225),
    channelId CHAR(30),
    category INT(11)
)
RETURNS TEXT
LANGUAGE SQL
DETERMINISTIC
BEGIN 
    IF(inHashtagCampaign(hashtagId,created,postSource)) THEN
        CASE postSource
            WHEN 'twitter' THEN
                INSERT INTO `posts_twitter` (
                    `hashtagId`,
                    `coordinates`,
                    `created`,
                    `filterlevel`,
                    `postId`,
                    `language`,
                    `profanity`,
                    `retweeted`,
                    `text`,
                    `truncated`,
                    `userId`,
                    `username`,
                    `userFullname`,
                    `media`,
                    `mediaType1`,
                    `media1`,
                    `mediaType2`,
                    `media2`,
                    `mediaType3`,
                    `media3`,
                    `mediaType4`,
                    `media4`
                )
                VALUES (
                    hashtagId,
                    POINT(coordinatesLat,coordinatesLon),
                    created,
                    filterlevel,
                    postId,
                    postLanguage,
                    profanity,
                    retweeted,
                    postText,
                    truncated,
                    userId,
                    username,
                    userFullname,
                    COALESCE(media1,media2,media3,media4),
                    mediaType1,
                    media1,
                    mediaType2,
                    media2,
                    mediaType3,
                    media3,
                    mediaType4,
                    media4
                )
                ON DUPLICATE KEY UPDATE `hashtagId` = `hashtagId`;
            ELSE
                RETURN FALSE;
        END CASE;
    END IF;
    RETURN returnVal;
END;$$

DELIMITER ;
SHOW WARNINGS;

我将该函数添加到mysql,现在我试图这样调用这个函数:

addPost(
    'twitter',
    11,
    NULL,
    NULL,
    NOW(),
    'none',
    'postId4t3443535',
    'en',
    0,
    0,
    'demo tekst blaat',
    0,
    34579345739254,
    'demo account',
    'demo_account',
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    null,
    null
)

但我收到了这个错误:

#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'addPost('twitter', 11, NULL, NULL, NOW(), 'none', 'postI' 附近使用正确的语法

是否可以调用这样的mysql函数?该函数inHashtagCampaign确实存在,但我认为它与这个问题无关,所以我没有在此处添加该函数的代码。

4

0 回答 0