Question: Show reservation details: Input the reservation ID and print all infor
ID: 3918805 • Letter: Q
Question
Question: Show reservation details: Input the reservation ID and print all information about this reservation.
I am able to get the procedure to compile, but I keep getting errors with my execute statement. Here is what I have so far:
set serveroutput on
CREATE OR REPLACE PROCEDURE Reserv_Detail (input_id IN number) AS
v_reservation_ID Reservation.reservation_id%type;
v_hotel_ID Reservation.hotel_id%type;
g_ID Reservation.g_id%type;
v_date_reserv_made Reservation.date_reserv_made%type;
v_discount_type Reservation.discount_type%type;
v_reserv_start Reservation.reserv_start%type;
v_reserv_end Reservation.reserv_end%type;
v_room_number Reservation.room_number%type;
BEGIN
SELECT reservation_ID, hotel_ID, g_ID, date_reserv_made, discount_type,
reserv_start, reserv_end, room_number
INTO v_reservation_ID , v_hotel_ID , g_ID , v_date_reserv_made , v_discount_type ,
v_reserv_start , v_reserv_end , v_room_number
FROM reservation
WHERE reservation_id=input_id;
dbms_output.put_line('Reservation id: ' || ' ' ||v_reservation_ID || ' ' ||
'Hotel ID:' || ' ' || v_hotel_ID || ' ' ||
'Guest ID:' || ' ' || g_ID || ' ' ||
'Date Reservation Made:' || ' ' || v_date_reserv_made || ' ' ||
'Discount type:' || ' ' || v_discount_type || ' ' ||
'Reservation start date:' || ' '|| v_reserv_start || ' ' ||
'Reservation end date:' || ' ' || v_reserv_end || ' ' ||
'Room number:' || ' ' || v_room_number);
END;
EXECUTE Reserv_Detail('DHD923', 2756, 197, to_date('02-JUN-18', 'DD-MON-YY'), 'seasonal', to_date('01-AUG-18', 'DD-MON-YY'),
to_date('14-AUG-18', 'DD-MON-YY' ), '212B');
Explanation / Answer
Reserv_Details Procedure accepts only one argument...
CREATE OR REPLACE PROCEDURE Reserv_Detail (input_id IN number)
but here you passed entire row, it is invalid...
EXECUTE Reserv_Detail('DHD923', 2756, 197, to_date('02-JUN-18', 'DD-MON-YY'), 'seasonal', to_date('01-AUG-18', 'DD-MON-YY'), to_date('14-AUG-18', 'DD-MON-YY' ), '212B');
You can execute procedure by by passing input_id i.e., reservation ID only
EXECUTE Reserv_Detail('DHD923'); // It will print the entire row of DHD923, which is in dbms.output.put_line
i.e.,
dbms_output.put_line('Reservation id: ' || ' ' ||v_reservation_ID || ' ' ||
'Hotel ID:' || ' ' || v_hotel_ID || ' ' ||
'Guest ID:' || ' ' || g_ID || ' ' ||
'Date Reservation Made:' || ' ' || v_date_reserv_made || ' ' ||
'Discount type:' || ' ' || v_discount_type || ' ' ||
'Reservation start date:' || ' '|| v_reserv_start || ' ' ||
'Reservation end date:' || ' ' || v_reserv_end || ' ' ||
'Room number:' || ' ' || v_room_number);
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.