小弟在学习存储过程,没发现这个错误在呢阿CREATE PROCEDURE P8()
BEGIN
DECLARE a INT;
DECLARE b INT;
SET a = 5;
SET b = 5;
INSERT INTO t VALUES (a);
SELECT s1 * a FROM t WHERE s1>=b;
END;

解决方案 »

  1.   

    SELECT s1 * a FROM t WHERE s1>=b;如果你的表中已经有a 则你的变量名则不能再用a了,避免表中字段名和变量名重复。
    另外你的表T中到底几个字段? s1 哪来的?建议列出你的 create table t .. 的语句。
      

  2.   

    SELECT s1 * a FROM t WHERE s1>=b;  -->
    select * from t where s1>=b;
      

  3.   

     我就一个字段,是按mysql官方教程来的就 t表s1 int(11)
      

  4.   

    SELECT s1*a FROM t WHERE s1>=b;
    什么错误信息
      

  5.   

    CREATE PROCEDURE P8() 
    BEGIN 
    DECLARE a INT; 
    DECLARE b INT; 
    SET a = 5; 
    SET b = 5; 
    as 
    INSERT INTO t VALUES (a); 
    SELECT s1 * a FROM t WHERE s1>=b; 
    END;
      

  6.   

    mysql> delimiter $$
    mysql> CREATE PROCEDURE P8() 
        -> BEGIN 
        -> DECLARE a INT; 
        -> DECLARE b INT; 
        -> SET a = 5; 
        -> SET b = 5; 
        -> INSERT INTO t VALUES (a); 
        -> SELECT s1 * a FROM t WHERE s1>=b; 
        -> END $$
    Query OK, 0 rows affected (0.00 sec)mysql> delimiter ;
    执行成功!
      

  7.   

    并无问题啊,你是不是没加 delimiter // 啊
    mysql> create table t (s1 int);
    Query OK, 0 rows affected (0.13 sec)mysql> delimiter //
    mysql> CREATE PROCEDURE P8()
        -> BEGIN
        ->  DECLARE a INT;
        ->  DECLARE b INT;
        ->  SET a = 5;
        ->  SET b = 5;
        ->  INSERT INTO t VALUES (a);
        ->  SELECT s1 * a FROM t WHERE s1>=b;
        -> END//
    Query OK, 0 rows affected (0.31 sec)mysql> delimiter ;
    mysql> call P8();
    +--------+
    | s1 * a |
    +--------+
    |     25 |
    +--------+
    1 row in set (0.09 sec)Query OK, 0 rows affected (0.09 sec)mysql>
      

  8.   

     我好像没加 delimiter //
    这个必须加吗? 我用phpadminmysql在写阿