私は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
は存在しますが、この質問には関係ないと思うので、その関数のコードをここに追加しませんでした。