2

我试图插入一个值,以防没有插入,否则试图更新它的一些字段。只使用了一个变量。尽管离子调用存储过程它显示插入一行,但没有插入值。请帮助我,第一次尝试 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
4

1 回答 1

5

重命名您的输入参数,以使数据库引擎清楚地知道您的意思是参数和列名。

where IpAddress = IpAddress 

总是正确的,因为引擎认为您将列与自身进行比较。

尝试

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 ;
于 2013-10-26T06:49:42.303 回答