Как решить Предупреждение: Функция создана с ошибками компиляции - PullRequest
1 голос
/ 21 апреля 2019

Попытка разработать функции PL / SQL для печати итоговых кредитов, зарегистрированных конкретным студентом, и считывания идентификатора студента от пользователя.

это код

 CREATE OR REPLACE FUNCTION totalcredit (stuid IN NUMBER)  RETURN number
IS
total number(100) := 0;
BEGIN
SELECT sum(b.credit) INTO total FROM student a INNER JOIN student_course c ON a.studid = c.studid INNER JOIN course b ON c.courseid = b.courseid WHERE a.studid = stuid;
RETURN total;
END;
/

и это таблица деталей

1 Ответ

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

Фактические ошибки можно получить, считав их из одного из представлений * _ERRORS, например, USER_ERRORS для объектов в схеме вошедшего в систему пользователя, ALL_ERRORS для ошибок, связанных с объектами, которые могут быть прочитаны текущим пользователем, илиDBA_ERRORS для ошибок, связанных со всеми объектами в базе данных.

Вы можете прочитать их, используя SELECT, например:

SELECT *
  FROM USER_ERRORS
  WHERE NAME = 'TOTALCREDIT'

Имейте в виду, что Oracle использует UPPER-CASE для всех объектов схемыесли они явно не указаны в кавычках, поэтому при запросе этих представлений вам нужно указать версию имени UPPER-CASE.

Документация здесь


В случаеиз вашей функции мне кажется, что проблема в том, что строка

total  number(100) := 0;

Oracle поддерживает только точность до 38 цифр.Я предлагаю вам изменить это значение на

total  number := 0;

и посмотреть, как это работает для вас.

Удачи.

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