2016-05-23 65 views
1

这是我第一次在MySQL存储过程的工作,我知道这是一个蹩脚的问题,请饶了我,这MySQL存储过程不返回任何值

是不可能结束后打印任何价值LOOP语句在MySQL程序中。如果是这样,我们如何才能做到这一点。 我所做的这个:

BEGIN 
    DECLARE U_movingCity varchar(50); 
    DECLARE U_state varchar(50); 
    DECLARE U_education varchar(50); 

    DECLARE id2 int(10); 
    DECLARE RankPoint int(10) DEFAULT 0; 

    DECLARE movingCity2 varchar(50); 
    DECLARE state2 varchar(50); 
    DECLARE education2 varchar(50); 

    DECLARE cur1 CURSOR FOR SELECT id, state , education FROM user WHERE id != userid AND Enabled='y' AND Active='y'; 

    SELECT state , education into U_state , U_education FROM user WHERE id = userid ; 

OPEN cur1; 
read_loop: LOOP 
    SET RankPoint := 0; 
    FETCH cur1 INTO id2, state2 , education2 ; 

    IF ((state2 = U_state)) THEN 
     SET RankPoint := RankPoint + 14; 
    END IF; 
    IF ((education2 = U_education)) THEN  
     SET RankPoint := RankPoint + 16; 
    END IF; 
    //this displays 
    select RankPoint; 

    END LOOP; 

    //this doesn't. 
    select id, RankPoint from user; 
    CLOSE cur1; 
END 
+1

不应该使用id2而不是id? 'select id2,来自用户的RankPoint;' –

+1

id2不是我用户表中的一列,它是我声明用于从光标获取值的var – VishAl

回答

0

你应该在你最后一次查询使用id2代替id

select `id2`, `RankPoint` from `user`; 
+0

id2不是我用户表中的一列,它是一个var声明用于从光标获取值。 – VishAl

+0

@VishAl是的,但在该var中,您将''游标'的值传递给它的'id'值。你有没有试过解决方案? –

+0

即使我尝试选择*它不起作用 – VishAl