mysql中的存储过程不起作用

时间:2013-10-26 06:47:49

标签: mysql sql stored-procedures

我试图在未插入的情况下插入值,否则尝试更新其某些字段。仅使用一个变量。 虽然离子调用存储过程显示插入一行,但值不插入。 请帮助我,第一次尝试SP。

这是我的存储过程

CREATE DEFINER=`root`@`localhost` PROCEDURE `InsertLocation`(in IpAddress varchar(45))
BEGIN     
  if (SELECT count(*) as count 
      FROM mbuzzz.location_byhits 
      where IpAddress = IpAddress
      having count>0)    
  then     
      UPDATE location_byhits SET Hits=Hits+1 where  IpAddress=IpAddress;    
  else     
      insert into location_byhits(IpAddress,Date_current) 
      values (IpAddress,CURTIME());     
  End if ;    
end

1 个答案:

答案 0 :(得分:3)

重命名输入参数,以便在表示参数和列名称时向数据库引擎清除。

where IpAddress = IpAddress 

始终为true,因为引擎认为您将列与自身进行比较。

尝试

delimiter |
CREATE DEFINER=`root`@`localhost` PROCEDURE `InsertLocation`(in IpAddrParam varchar(45))
BEGIN     
  if ((SELECT count(*) FROM mbuzzz.location_byhits where IpAddress = IpAddrParam)>0)    
  then     
      UPDATE location_byhits SET Hits=Hits+1 where IpAddress=IpAddrParam;    
  else     
      insert into location_byhits(IpAddress,Date_current) 
      values (IpAddrParam, CURTIME());     
  End if ;    
end
|
delimiter ;