Как использовать функцию MySQL для вставки данных

Я создал функцию 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, чтобы узнать правильный синтаксис для использования рядом с 'addPost( 'twitter', 11, NULL, NULL, NOW(), 'none', 'postI'в строке 1

Можно ли вызвать такую ​​функцию mysql? Функция inHashtagCampaign существует, но я не думаю, что это имеет отношение к этому вопросу, поэтому я не добавил код этой функции здесь.

0 ответов

Другие вопросы по тегам