在oracle中有如下语句,此语句的功能应该是让用户输入,如果输入的值小于60,则应继续让用户输入,直到输入的值大于60为止。但是,如果我输入的值小于60,电脑就死机(死循环),不能继续输入。不知这是怎么回事。BEGIN
  LOOP
    IF &s > 60 THEN
      DBMS_OUTPUT.PUT_LINE('该生已通过');
      EXIT;
     END IF;
  END LOOP;
END;

解决方案 »

  1.   

    语句执行时,你第一次输入MARK值后,LOOP循环始终就用这个值去比大小,所以死循环。
    要想正常工作,就把输入参数值的这个操作也放入循环体中。
      

  2.   

    当&s <60时,你也需要处理。否则,就进入Loop中,没有跳出来的机会。
    Begin
      Loop
        If &s >= 60 Then
          DBMS_OUTPUT.PUT_LINE('该生已通过');
          Exit;
        Else
          --处理<60的情况
          Raise;
        End If;
      End Loop;
    End;
      

  3.   

    当&s <60时,你也需要处理。否则,就进入Loop中,没有跳出来的机会。
    Begin
      Loop
        If &s >= 60 Then
          DBMS_OUTPUT.PUT_LINE('该生已通过');
          Exit;
        Else
          --处理<60的情况
          Raise;
        End If;
      End Loop;
    End;
      

  4.   

    当&s <60时,你也需要处理。否则,就进入Loop中,没有跳出来的机会。
    Begin
      Loop
        If &s >= 60 Then
          DBMS_OUTPUT.PUT_LINE('该生已通过');
          Exit;
        Else
          --处理<60的情况
          Raise;
        End If;
      End Loop;
    End;
      

  5.   

    当&s <60时,你也需要处理。否则,就进入Loop中,没有跳出来的机会。
    Begin
      Loop
        If &s >= 60 Then
          DBMS_OUTPUT.PUT_LINE('该生已通过');
          Exit;
        Else
          --处理<60的情况
          Raise;
        End If;
      End Loop;
    End;
      

  6.   

    当&s <60时,你也需要处理。否则,就进入Loop中,没有跳出来的机会。
    Begin
      Loop
        If &s >= 60 Then
          DBMS_OUTPUT.PUT_LINE('该生已通过');
          Exit;
        Else
          --处理<60的情况
          Raise;
        End If;
      End Loop;
    End;
      

  7.   

    当&s <60时,你也需要处理。否则,就进入Loop中,没有跳出来的机会。
    Begin
      Loop
        If &s >= 60 Then
          DBMS_OUTPUT.PUT_LINE('该生已通过');
          Exit;
        Else
          --处理<60的情况
          Raise;
        End If;
      End Loop;
    End;
      

  8.   

    现在输入参数值就在循环体内呀。它在LOOP循环中的呀。
      

  9.   

    你第一次输入变量的值后,到LOOP循环第二次来读变量时,它始终是用的你第一次输入的变量值。所以就死循环了。还是写个存储过程来实现这个功能吧。