ORA-00955: имя уже используется существующим объектом с функцией - PullRequest
0 голосов
/ 03 мая 2020

Я пытаюсь написать функцию, которая может возвращать количество посещений по номеру рейса в Oracle 'SQL', мой код

Create or replace function TravelersCount(flightNumber in number)
Return number
Is
Travelers_Count number(20); 
BEGIN

Select count(traveler_number) into Travelers_Count from Travel_details where flight_number = flightNumber;
return Travelers_Count;
END;

, но я получил это сообщение об ошибке

ORA-00955: name is already used by an existing object

Пожалуйста, помогите мне в этой проблеме

Ответы [ 2 ]

0 голосов
/ 03 мая 2020

Проверьте это с помощью

select * from user_objects where object_name = 'TRAVELERSCOUNT';

Посмотрите тип объекта и решите, что делать (удалить его и повторно использовать имя этого объекта или изменить имя функции на другое).


Предложение, если можно: вы назвали параметр почти таким же, как имя столбца:

where flight_number = flightNumber

Трудно отличить guish, который есть какой. Обычно мы предшествуем параметрам с некоторым префиксом, например p_ или par_. Кроме того, это хорошая привычка всегда использовать псевдонимы таблиц, чтобы избежать путаницы. Наконец, в Oracle все имена объектов по умолчанию имеют значение UPPERCASE (мы не используем MixedCase, но подчеркиваем, как в mixed_case), но вы можете ссылаться на них, используя любой регистр.

Итак:

create or replace function f_travelers_count (p_flight_number in number)
  return number
is
  travelers_count number(20); 
begin
  select count(t.traveler_number) 
    into travelers_count 
    from travel_details t
    where t.flight_number = p_flight_number;

  return travelers_count;
end;
0 голосов
/ 03 мая 2020

изменить имя функции TravelersCount на другое значение. Похоже, есть какой-то другой объект с таким именем

Create or replace function TravelersCount (flightNumber in number) ...

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