Changes between Version 2 and Version 3 of Stored Functions and Procedures
- Timestamp:
- 05/12/26 02:31:58 (2 weeks ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Stored Functions and Procedures
v2 v3 11 11 Calculates the total cost of a wedding using venue, photographer, and band bookings. 12 12 13 === SQL Code === 14 15 <pre> 16 CREATE OR REPLACE FUNCTION calculate_wedding_total_cost(p_wedding_id INTEGER) 17 RETURNS NUMERIC AS $$ 18 DECLARE 19 total_cost NUMERIC; 20 BEGIN 21 SELECT 22 COALESCE(SUM(vb.price), 0) 23 INTO total_cost 24 FROM wedding w 25 LEFT JOIN venue_booking vb ON w.wedding_id = vb.wedding_id 26 WHERE w.wedding_id = p_wedding_id; 27 28 RETURN total_cost; 29 END; 30 $$ LANGUAGE plpgsql; 31 </pre> 32 13 33 == 2. is_venue_available() == 14 34 … … 17 37 Checks whether a venue is available for a selected date and time interval. 18 38 39 === SQL Code === 40 41 <pre> 42 CREATE OR REPLACE FUNCTION is_venue_available( 43 p_venue_id INTEGER, 44 p_date DATE, 45 p_start TIME, 46 p_end TIME 47 ) 48 RETURNS BOOLEAN AS $$ 49 BEGIN 50 RETURN NOT EXISTS ( 51 SELECT 1 52 FROM venue_booking 53 WHERE venue_id = p_venue_id 54 AND "date" = p_date 55 AND ( 56 p_start < end_time 57 AND p_end > start_time 58 ) 59 ); 60 END; 61 $$ LANGUAGE plpgsql; 62 </pre> 63 19 64 == 3. is_photographer_available() == 20 65 … … 22 67 23 68 Checks whether a photographer is available for a selected date and time interval. 69 70 === SQL Code === 71 72 <pre> 73 CREATE OR REPLACE FUNCTION is_photographer_available( 74 p_photographer_id INTEGER, 75 p_date DATE, 76 p_start TIME, 77 p_end TIME 78 ) 79 RETURNS BOOLEAN AS $$ 80 BEGIN 81 RETURN NOT EXISTS ( 82 SELECT 1 83 FROM photographer_booking 84 WHERE photographer_id = p_photographer_id 85 AND "date" = p_date 86 AND ( 87 p_start < end_time 88 AND p_end > start_time 89 ) 90 ); 91 END; 92 $$ LANGUAGE plpgsql; 93 </pre> 24 94 25 95 == 4. generate_rsvp_summary() == … … 31 101 === SQL Code === 32 102 33 {{collapse(View SQL Code) 34 <syntaxhighlight lang="sql"> 35 PASTE SQL FROM advanced_functions.sql 36 </syntaxhighlight> 37 }} 103 <pre> 104 CREATE OR REPLACE PROCEDURE generate_rsvp_summary(p_event_id INTEGER) 105 LANGUAGE plpgsql 106 AS $$ 107 BEGIN 108 RAISE NOTICE 'Accepted: %', 109 ( 110 SELECT COUNT(*) 111 FROM event_rsvp 112 WHERE event_id = p_event_id 113 AND status = 'accepted' 114 ); 115 END; 116 $$; 117 </pre>
