下面创建的函数过程,哪个地方不对?
DROP FUNCTION IF EXISTS fn_isreplace;
delimiter //
Create function fn_isreplace
(`update` datetime,timezone int)
returns int  
begin
declare `curtime` datetime;
declare curlttime datetime;
declare curutctime datetime;
declare re_sec int;
set `curtime` = NOW();
set curutctime = CONVERT_TZ(NOW(),'+08:00','+00:00');

if `update` <> 0 then
begin
if timezone >= 1 then
set `curtime` = CONVERT_TZ(NOW(),'+08:00','+00:00');
else
begin
if curutctime - curlttime = 0 then
set `curtime` = curutctime;
else 
set `curtime` = curlttime;
end if;
end;
end if;
set  re_sec = Round(Cast((`update` - `curtime`) as decimal),0);
end;
else
set re_sec = 0;

end if;
return re_sec;
end//
delimiter ;

解决方案 »

  1.   


    运行后出错提示:SQL Error(1064):You have an error in your SQL syntax;check the manual that corresponds to your MySQL server version for the right syntax to user near '' at line 20.
    说明下,
    我的Line 20代码是:
    set `curtime` = CONVERT_TZ(NOW(),'+08:00','+00:00');
    else
      

  2.   


    mysql> DROP FUNCTION IF EXISTS fn_isreplace;
    Query OK, 0 rows affected, 1 warning (0.05 sec)mysql> delimiter //
    mysql> Create function fn_isreplace
        -> (`update` datetime,timezone int)
        -> returns int
        -> begin
        ->     declare `curtime` datetime;
        ->     declare curlttime datetime;
        ->     declare curutctime datetime;
        ->     declare re_sec int;
        ->     set `curtime` = NOW();
        ->     set curutctime = CONVERT_TZ(NOW(),'+08:00','+00:00');
        ->
        ->     if `update` <> 0 then
        ->     begin
        ->         if timezone >= 1 then
        ->             set `curtime` = CONVERT_TZ(NOW(),'+08:00','+00:00');
        ->         else
        ->             begin
        ->                 if curutctime - curlttime = 0 then
        ->                     set `curtime` = curutctime;
        ->                 else
        ->                     set `curtime` = curlttime;
        ->                 end if;
        ->             end;
        ->         end if;
        ->         set  re_sec = Round(Cast((`update` - `curtime`) as decimal),0);
        ->     end;
        ->     else
        ->         set re_sec = 0;
        ->
        ->     end if;
        ->     return re_sec;
        -> end//
    Query OK, 0 rows affected (0.05 sec)mysql> delimiter ;
    mysql>
    没有发现错误。
      

  3.   

    奇怪了,我删除SQL文件,再粘贴代码运行就没出错了,为什么了呢?
    注释符的原因?