我有以下mysql存储过程
create procedure SP_InsertTag_Level2 (tag_v varchar(50), CNT_v int)
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, tweet_tags B where A.tag=B.tag and B.tweet_id=@tid;
select id into @Id from collected_tags where tag=tag_v;
IF @Id IS NOT NULL THEN
insert into stats_tag(id,counter) values (@id,CNT_v);
END IF;
end;
现在我收到错误 ERROR 1054 (42S22): Unknown column 'tag_v' in 'field list'
为上面的粗体线,因为tag_v不是gather_tags表中的列(它是SP中的参数)
如何在存储过程中选定的列列表中保留(插入)变量?
1 回答
您需要使用
BEGIN
启动存储过程体 .此外,我建议不要在存储过程中使用@vars,因为它们会泄漏到外部 . 最好使用类型化声明的变量 .
要成功关闭存储过程,您需要声明自定义分隔符 .
并使用它来关闭最终
END
Implicit join's are evil
不要使用隐式连接,它们是反模式,而是使用显式连接语法 .