Как написать блок PL / SQL, чтобы получить сложение числа?Экс.при вводе 245 добавление должно обрабатываться как 2 + 4 + 5 - PullRequest
1 голос
/ 21 сентября 2019

Мне нужно написать блок в PL / SQL, что может привести к добавлению введенного числа.

Например, если я ввожу 245, это должно дать вывод как сложение, если эти 3номер (т.е. 2 + 4 + 5).

Надеюсь, вы получили мой запрос.

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 21 сентября 2019

Для этого вам не нужен PL / SQL.

SQL> set ver off
SQL>
SQL> select sum(dig) result
  2  from (select substr(&&enter_number, level, 1) dig
  3        from dual
  4        connect by level <= length(&&enter_number)
  5       );
Enter value for enter_number: 245

    RESULT
----------
        11

Переписать его в функцию просто:

SQL> create or replace function f_dig (par_enter_number in number)
  2    return number
  3  is
  4    retval number;
  5  begin
  6    select sum(dig)
  7      into retval
  8      from (select substr(par_enter_number, level, 1) dig
  9            from dual
 10            connect by level <= length(par_enter_number)
 11           );
 12    return retval;
 13  end;
 14  /

Function created.

SQL> select f_dig(245) result_1,
  2         f_dig(189) result_2,
  3         f_dig(9834188) result_3
  4  from dual;

  RESULT_1   RESULT_2   RESULT_3
---------- ---------- ----------
        11         18         41

SQL>
0 голосов
/ 21 сентября 2019

Вы можете попробовать следующую функцию для того же -

CREATE OR REPLACE FUNCTION digit_sum(P_N NUMBER)
RETURN NUMBER
IS
n number := P_N;
s number := 0;
m number := 0;
BEGIN
    WHILE (n > 0) LOOP
        m := MOD(n, 10);
        s := s + m;
        n := TRUNC(n/10);
    END LOOP;
    RETURN (s);
END digit_sum;
/

Здесь - это скрипка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...