| 149 | | [[Image("Screenshot 2026-05-20 161319.png", 300px)]] |
| 150 | | |
| | 149 | {{{ |
| | 150 | #!sql |
| | 151 | CREATE OR REPLACE PROCEDURE cancel_reservation(p_reservation_id INT) |
| | 152 | AS $$ |
| | 153 | BEGIN |
| | 154 | UPDATE Reservation |
| | 155 | SET status = 'Cancelled' |
| | 156 | WHERE reservation_id = p_reservation_id; |
| | 157 | |
| | 158 | UPDATE Ticket |
| | 159 | SET ticket_status = 'Cancelled' |
| | 160 | WHERE Paymentpayment_id IN ( |
| | 161 | SELECT payment_id |
| | 162 | FROM Payment |
| | 163 | WHERE Reservationreservation_id = p_reservation_id |
| | 164 | ); |
| | 165 | RAISE NOTICE 'Reservation % has been canceled successfully.', p_reservation_id; |
| | 166 | END; |
| | 167 | $$ LANGUAGE plpgsql; |
| | 168 | |
| | 169 | SELECT * FROM Reservation where reservation_id = 17; |
| | 170 | |
| | 171 | SELECT * FROM Ticket |
| | 172 | WHERE Paymentpayment_id IN ( |
| | 173 | SELECT payment_id FROM Payment WHERE Reservationreservation_id = 17 |
| | 174 | ); |
| | 175 | |
| | 176 | CALL cancel_reservation(17); |
| | 177 | |
| | 178 | }}} |