Вывести сумму n чисел в plsql - PullRequest
0 голосов
/ 21 апреля 2019
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 чисел, но получаю следующую ошибку:

Предупреждение: функция создана с ошибками компиляции.

1 Ответ

0 голосов
/ 21 апреля 2019

В вашем коде несколько ошибок.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...