>
CREATE OR REPLACE FUNCTION printsum(n IN number) IS
res number:=0;
BEGIN
while(n>0)
LOOP
res:=res+n;
n:=n-1;
EXIT WHEN n=0;
END LOOP;
dbms_output.put_line(' result of sum: '||res);
END;
/

n 개의 숫자의 합을 인쇄하려고하는데 다음과 같은 오류가 발생합니다 :

와이즈 비즈

Warning: Function created with compilation errors.


  • 답변 # 1

    코드에 오류가 거의 없습니다.

    1) Function   Return 가 있어야합니다  하지만 코드에 Return 가 없습니다.  처음과 끝에 진술.

    2) IN  코드 내에서 매개 변수를 재 할당 할 수 없습니다. 그래서 당신은 IN 를 복사해야합니다  반복 할 변수에 매개 변수를 추가하십시오.

    이것을 시도하십시오 :

    CREATE OR REPLACE FUNCTION printsum( n IN NUMBER)
        RETURN NUMBER
      IS
        res   NUMBER:=0;
        v_num NUMBER:=n;
      BEGIN        
        WHILE(v_num>0)
        LOOP
          res   := res   + v_num;
          v_num := v_num -1;
          EXIT  WHEN v_num=0;        
        END LOOP;
        dbms_output.put_line(' result of sum: '||res);
        RETURN(res);      
      END;
      /
    
    

    출력 :

    SQL> select printsum(10) from dual;
    PRINTSUM(10)
    ------------
              55
    
    

관련 자료

  • 이전 ASP NET 상용구> swagger codegen 도구 (nswag)를 사용하여 C # swagger 클라이언트 생성이 작동하지 않음
  • 다음 amazon s3 - S3에서 학습 된 데이터 파일을 읽는 방법