X не является допустимым атрибутом курсора plsql - PullRequest
0 голосов
/ 30 сентября 2018

Я пытаюсь найти gcd двух чисел, используя рекурсивный подход.Моя функция:

create or replace function gcd(a in number, b in number)
return number
as
begin
    if a = 0
    then return b;
    else return gcd(b % a, a);
    end if;
end;
/

Я называю это так

declare
      a1 number;
      b1 number;
      z number;
begin
   a1:=25;
   b1:=40;
   z := gcd(a1,b1);
   dbms_output.put_line(z);
end;

Это вызывает у меня эту ошибку:

Сообщение об ошибке -
ORA-06550: строка 15, столбец 14:
PLS-00208: идентификатор 'X' не является допустимым атрибутом курсора
ORA-06550: строка 15, столбец 4: PL / SQL: оператор игнорируется
06550. 00000- "строка% s, столбец% s: \ n% s"
* Причина: обычно ошибка компиляции PL / SQL.
* Действие:

1 Ответ

0 голосов
/ 30 сентября 2018

b % a не является допустимым синтаксисом Oracle.Если вы хотите вычислить модуль, вам нужно использовать функцию Oracle MOD (), то есть mod(b, a).

Вы получаете ошибку PLS-00208, потому что Oracle использует символ % для ссылки на атрибуты курсора, такие как%rowtype или %notfound. Узнайте больше .

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