在MySQL界面操作中已经建好了a表,
creat table a 
(
ID int(10)  not null primary key;
v  float(20)    
)ENGINE=InnoDB;
use a
insert into a values (1,'2.5'),(2,'3.5'),(3,'4.5'),(4,'5.5’);
 
并创建一存储过程P,如下所示:
DELIMITER $$
DROP PROCEDURE IF EXISTS `P` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `P`()
BEGIN
  declare i int default 0;
  declare h float default 0;
  while i<9 do
  set i=i+1;
  Select i AS ID, h as he;
 set h=h+(select v from a where ID=i);
  END while;
END $$
DELIMITER ;
为什么最后得到结果是放在几张表中的结果,不是在同一张表中?
 

解决方案 »

  1.   

    你要达到什么目的?
     Select i AS ID, h as he;
    什么意思?
    select id into i from a;
    select he into h from a;
      

  2.   

    h的初始值是0,最后得到一个显示有ID和H的表
      

  3.   

    DELIMITER $$
    DROP PROCEDURE IF EXISTS `P` $$
    CREATE DEFINER=`root`@`localhost` PROCEDURE `P`()
    BEGIN
      declare i int default 0;
      declare h float default 0;
      while i<9 do
      set i=i+1;
    insert into a values(i);
       
      END while;
    END $$
    DELIMITER ;
      

  4.   

    得出来的结果形式如下所示:
    mysql> call p();
    +------+------+
    | ID   | he   |
    +------+------+
    |    1 |    0 |
    +------+------+
    1 row in set (0.00 sec)+------+------+
    | ID   | he   |
    +------+------+
    |    2 |    1 |
    +------+------+
    1 row in set (0.03 sec)+------+------+
    | ID   | he   |
    +------+------+
    |    3 |    3 |
    +------+------+
    1 row in set (0.03 sec)+------+------+
    | ID   | he   |
    +------+------+
    |    4 |    6 |
    +------+------+
    1 row in set (0.05 sec)+------+------+
    | ID   | he   |
    +------+------+
    |    5 |   10 |
    +------+------+
    1 row in set (0.05 sec)+------+------+
    | ID   | he   |
    +------+------+
    |    6 |   15 |
    +------+------+
    1 row in set (0.06 sec)
      

  5.   

    因为你执行了多个SELECT,每个 Select i AS ID, h as he; 都会返回一个结果集。你期望结果是什么?
      

  6.   

    期望的结果就是想把所有的结果放在一张表上。如果不用select语句,那应该怎么办呢?
      

  7.   


    1. 直接使用一个SQL语句完成,根本不用存储过程
    2. 在存储过程中使用临时表,先把记录写入临时表,然后SELECT出来。
      

  8.   

    root880928 (root880928)
      '截至2010-10-29 17:16:56  用户结帖率40.00% 当您的问题得到解答后请及时结贴.
    http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html
    http://topic.csdn.net/u/20100428/09/BC9E0908-F250-42A6-8765-B50A82FE186A.html
    http://topic.csdn.net/u/20100626/09/f35a4763-4b59-49c3-8061-d48fdbc29561.html8、如何给分和结贴?
    http://community.csdn.net/Help/HelpCenter.htm#结帖