это часть пакета для бронирования номеров в отеле (для упрощения ошибки я удалил параметры даты):
create or replace package room_reservation
is
PROCEDURE are_free_rooms (
room_capacity IN NUMBER,
room_category IN VARCHAR2);
end;
CREATE OR REPLACE PACKAGE BODY room_reservation IS
PROCEDURE are_free_rooms (
room_capacity IN NUMBER,
room_category IN VARCHAR2
) IS
v_room_id NUMBER;
CURSOR rooms IS SELECT
r.room_id
FROM
rooms r
LEFT JOIN reservations res ON r.room_id = res.room_id
JOIN room_category rc ON rc.category_id = r.room_category
WHERE
r.capacity = room_capacity
AND rc.name = room_category
;
BEGIN
FOR v_room_id IN rooms LOOP
dbms_output.put_line(v_room_id.room_id);
END LOOP;
END;
END;
Все компилируется, но когда я хочу вызвать процедуру, я получил ошибку:
Error starting at line : 1 in command -
begin
ROOM_RESERVATION.ARE_FREE_ROOMS(4,'vip');
end;
Error report -
ORA-01722: invalid number
ORA-06512: at "SYSTEM.ROOM_RESERVATION", line 65
ORA-06512: at line 2
01722. 00000 - "invalid number"
*Cause: The specified number was invalid.
*Action: Specify a valid number.
Я пытаюсь решить эту проблему, и я не знаю, где у меня есть проблема со строкой, потому что я прочитал:
Ошибка ORA-01722 возникает при попытке преобразования
символьная строка в число, и строка не может быть преобразована
в число.