MySQL工作台过程不返回任何结果

MySQL工作台过程不返回任何结果,mysql,mysql-workbench,Mysql,Mysql Workbench,您好,可爱的堆栈溢出社区。 我有一组值x值,我试图找到最近的较大值,然后将差值除以2,并将其设置为新列中的一个新值,称为“最近的_x”。我创建了一个带有while循环的过程。程序运行后,没有结果。我想这是因为我在while循环中使用了ele_id,我想我只需要依次查看每一行?我非常感激你的想法。我的第一个堆栈溢出帖子 DELIMITER ;; CREATE PROCEDURE highX_rowperrow() BEGIN DECLARE n INT DEFAU

您好,可爱的堆栈溢出社区。 我有一组值x值,我试图找到最近的较大值,然后将差值除以2,并将其设置为新列中的一个新值,称为“最近的_x”。我创建了一个带有while循环的过程。程序运行后,没有结果。我想这是因为我在while循环中使用了ele_id,我想我只需要依次查看每一行?我非常感激你的想法。我的第一个堆栈溢出帖子

    DELIMITER ;; 
    CREATE PROCEDURE highX_rowperrow()
    BEGIN
    DECLARE n INT DEFAULT 0; 
    DECLARE i INT DEFAULT 0; 
    SET n = (SELECT COUNT(*) FROM table_csa WHERE condition = "pal0");

    SET i=0; 
    WHILE i<n DO #start while loop 
    SET @x1pal0 = (SELECT x FROM table_csa WHERE ele_id=(21001+i) AND condition = "pal0"); #count applicable rows (pal10 always first)


    SET @Xnearest = (select  x from table_csa  where    x > @x1pal0 and condition = "pal0" order by x asc limit 1); #Select the nearest larger than x value 

    SET @polypoint = @x1pal0+((abs(@x1pal)-abs(@Xnearest))/2); #calculate the difference and divide by 2 to set up point

    UPDATE table_csa SET nearest_x = @polypoint WHERE ele_id=(21001+i); #put value in table

    SET i=i+1; 
END WHILE;

我需要使用光标,而不是一个while循环!
[MySQL\u tutorial\u link]

您是否遇到任何错误?请参阅。您的问题不仅仅是一个非常简单的SQL查询,而且更需要它。您可以通过将select语句放入过程中进行调试..嗨,Darkonekt,我没有收到任何错误,它运行了,然后说没有行更改。感谢Ken提供的链接,我将进行调查。我发现我可以在下面的一个元素上使用非常相似的文本来完成此功能:但相同的解决方案在循环中不起作用。为什么会这样?
    Set @var=2;
    SET @x1pal0 = (SELECT x FROM table_csa WHERE ele_id=(21001+@var) AND condition = "pal0");
    SET @Xnearest = (select  x from table_csa  where    x > @x1pal0 and condition = "pal0" order by x asc limit 1);
    SET @polypoint =@x1pal0+abs(@x1pal0-@Xnearest)/2;
    Select @x1pal0, @Xnearest, @polypoint, ele_id from table_csa where ele_id=(21001+@var) and condition = "pal0" ;

    UPDATE table_csa SET nearest_x = @polypoint WHERE ele_id=(21001+@var);