Вам нужно запустить тело хранимой процедуры с BEGIN
.
Также я бы рекомендовал не использовать @vars в хранимых процедурах, потому что они просачиваются наружу. Лучше использовать типизированные объявленные переменные.
Чтобы успешно закрыть сохраненный процесс, вам нужно объявить пользовательский разделитель.
И используйте это, чтобы закрыть финал END
DELIMITER $$
CREATE PROCEDURE SP_InsertTag_Level2 (IN tag_v varchar(50), IN CNT_v int)
BEGIN
DECLARE tid INTEGER;
DECLARE myid INTEGER;
SELECT tweet_id INTO tid FROM tweet_tags WHERE tag=tag_v;
INSERT INTO collected_tags (tag,country)
SELECT tag_v, A.country
FROM collected_tags A
INNER JOIN tweet_tags B on (A.tag = B.tag)
WHERE B.tweet_id = tid
SELECT id INTO myId FROM collected_tags WHERE tag=tag_v;
IF (myId IS NOT NULL) THEN
INSERT INTO stats_tag(id,counter) VALUES (myid,CNT_v);
END IF;
END $$
DELIMITER ;
Неявные объединения злы
Не используйте неявные объединения, они являются антишаблоном, вместо этого используйте явный синтаксис объединения.