Ваша процедура имеет 5 формальных аргументов, а ваш вызов имеет только 3. Вам нужно указать где-нибудь, чтобы переменные out
были отправлены.Поскольку вы, похоже, используете SQL * Plus или SQL Developer, судя по execute
, вы можете использовать переменные связывания, а затем распечатывать их после вызова:
variable l_flightid number;
variable l_fare number;
execute flight_search('JFK', 'LHR', date '2018-11-25', l_flightid, l_fare);
print l_flightid
Я также изменил третийаргумент фактической даты, а не строка, которая должна быть неявно преобразована в дату с использованием текущих настроек NLS сеанса.Я использовал литерал даты , но вы также можете использовать to_date()
со строковым литералом и подходящей маской формата.
Кстати, вы в настоящее время не заполняете v_fare
.поэтому я не стал печатать эту переменную после вызова;и неясно, откуда это взялось.И вы можете рассмотреть возможность использования неявного цикла курсора вместо явного.