MySQL phpmyadmin中的过程

MySQL phpmyadmin中的过程,mysql,sql,stored-procedures,phpmyadmin,Mysql,Sql,Stored Procedures,Phpmyadmin,我想在ASP中创建一个页面查看计数器,并想检查自上次从某个ip查看以来是否已经过了10分钟。我在MySQL phpmyadmin中编写了一个过程,用于在数据库中检查该过程 CREATE PROCEDURE counter( in ipOfVisitor varchar(30), in pid int(10)) BEGIN SELECT @visitor_IP := ip, @date_dif := DATEDIFF( CURDATE( ) , last

我想在ASP中创建一个页面查看计数器,并想检查自上次从某个ip查看以来是否已经过了10分钟。我在MySQL phpmyadmin中编写了一个过程,用于在数据库中检查该过程

    CREATE PROCEDURE counter(
    in  ipOfVisitor varchar(30), 
    in  pid  int(10))
BEGIN


    SELECT @visitor_IP := ip, @date_dif := DATEDIFF( CURDATE( ) , last_counted )
    FROM visitors
    WHERE ip = ipOfVisitor ;

    IF (NOT @visitor_IP = null AND @date_dif > 600) OR @visitor_IP = null THEN
    UPDATE patientifo SET numberofclicks = numberofclicks + 1 WHERE id = pid;
    END IF;
    IF NOT @visitor_IP = null AND @date_dif > 600 THEN
    UPDATE visitors SET last_counted = CURDATE( ) where ip = ipOfVisitor;
    END IF;
    IF @visitor_IP = null THEN
    INSERT INTO visitors (ip, last_counted) VALUES (ipOfVisitor, CURDATE ());
    END IF;
END
但这会产生错误

CREATE PROCEDURE counter( IN ipOfVisitor VARCHAR( 30 ) , IN pid INT( 10 ) ) BEGIN SELECT @visitor_IP := ip, @date_dif := DATEDIFF( CURDATE( ) , last_counted ) 
FROM visitors
WHERE ip = ipOfVisitor;
#1064-您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以获取第9行“”附近要使用的正确语法

这是什么意思

编辑

我像你说的那样修改了密码

 DELIMITER |
CREATE PROCEDURE counter(
    in  ipOfVisitor varchar(30), 
    in  pid  int(10))
BEGIN
    DECLARE visitor_IP varchar(30);
    DECLARE date_dif int(10);

    SELECT ip,DATEDIFF( CURDATE( ) , last_counted ) INTO visitor_IP,  date_dif
    FROM visitors
    WHERE ip = ipOfVisitor ;

    IF (NOT visitor_IP = null AND date_dif > 600) OR visitor_IP = null THEN
    UPDATE patientifo SET numberofclicks = numberofclicks + 1 WHERE id = pid;
    END IF;
    IF NOT visitor_IP = null AND date_dif > 600 THEN
    UPDATE visitors SET last_counted = CURDATE( ) where ip = ipOfVisitor;
    END IF;
    IF visitor_IP = null THEN
    INSERT INTO visitors (ip, last_counted) VALUES (ipOfVisitor, CURDATE ());
    END IF;
END
|
而且它几乎起作用了。除最后一行的错误外:
#1064-您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第22行“|”附近使用的正确语法。您需要更改分隔符。否则DB认为您的过程定义在第一个
处结束这将是不完整的

delimiter |
CREATE PROCEDURE counter(
    in  ipOfVisitor varchar(30), 
    in  pid  int(10))
BEGIN    
   ...
END
|

您需要更改分隔符。否则DB认为您的过程定义在第一个
处结束这将是不完整的

delimiter |
CREATE PROCEDURE counter(
    in  ipOfVisitor varchar(30), 
    in  pid  int(10))
BEGIN    
   ...
END
|

您需要更改分隔符。否则DB认为您的过程定义在第一个
处结束这将是不完整的

delimiter |
CREATE PROCEDURE counter(
    in  ipOfVisitor varchar(30), 
    in  pid  int(10))
BEGIN    
   ...
END
|

您需要更改分隔符。否则DB认为您的过程定义在第一个
处结束这将是不完整的

delimiter |
CREATE PROCEDURE counter(
    in  ipOfVisitor varchar(30), 
    in  pid  int(10))
BEGIN    
   ...
END
|

它几乎可以工作,但在最后一行给出了错误#1064-您的SQL语法中有一个错误;检查与MySQL服务器版本对应的手册,以了解第22行“|”附近使用的正确语法似乎有问题。你执行了什么代码?实际上它对我有用。我执行了您提供的代码,它几乎可以正常工作,但最后一行出现错误#1064-您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第22行“|”附近使用的正确语法似乎有问题。你执行了什么代码?实际上它对我有用。我执行了您提供的代码,它几乎可以正常工作,但最后一行出现错误#1064-您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第22行“|”附近使用的正确语法似乎有问题。你执行了什么代码?实际上它对我有用。我执行了您提供的代码,它几乎可以正常工作,但最后一行出现错误#1064-您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第22行“|”附近使用的正确语法似乎有问题。你执行了什么代码?实际上它对我有用。我执行了你提供的代码