Changes between Version 2 and Version 3 of Stored Functions and Procedures


Ignore:
Timestamp:
05/12/26 02:31:58 (2 weeks ago)
Author:
193284
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Stored Functions and Procedures

    v2 v3  
    1111Calculates the total cost of a wedding using venue, photographer, and band bookings.
    1212
     13=== SQL Code ===
     14
     15<pre>
     16CREATE OR REPLACE FUNCTION calculate_wedding_total_cost(p_wedding_id INTEGER)
     17RETURNS NUMERIC AS $$
     18DECLARE
     19    total_cost NUMERIC;
     20BEGIN
     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;
     29END;
     30$$ LANGUAGE plpgsql;
     31</pre>
     32
    1333== 2. is_venue_available() ==
    1434
     
    1737Checks whether a venue is available for a selected date and time interval.
    1838
     39=== SQL Code ===
     40
     41<pre>
     42CREATE OR REPLACE FUNCTION is_venue_available(
     43    p_venue_id INTEGER,
     44    p_date DATE,
     45    p_start TIME,
     46    p_end TIME
     47)
     48RETURNS BOOLEAN AS $$
     49BEGIN
     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    );
     60END;
     61$$ LANGUAGE plpgsql;
     62</pre>
     63
    1964== 3. is_photographer_available() ==
    2065
     
    2267
    2368Checks whether a photographer is available for a selected date and time interval.
     69
     70=== SQL Code ===
     71
     72<pre>
     73CREATE OR REPLACE FUNCTION is_photographer_available(
     74    p_photographer_id INTEGER,
     75    p_date DATE,
     76    p_start TIME,
     77    p_end TIME
     78)
     79RETURNS BOOLEAN AS $$
     80BEGIN
     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    );
     91END;
     92$$ LANGUAGE plpgsql;
     93</pre>
    2494
    2595== 4. generate_rsvp_summary() ==
     
    31101=== SQL Code ===
    32102
    33 {{collapse(View SQL Code)
    34 <syntaxhighlight lang="sql">
    35 PASTE SQL FROM advanced_functions.sql
    36 </syntaxhighlight>
    37 }}
     103<pre>
     104CREATE OR REPLACE PROCEDURE generate_rsvp_summary(p_event_id INTEGER)
     105LANGUAGE plpgsql
     106AS $$
     107BEGIN
     108    RAISE NOTICE 'Accepted: %',
     109    (
     110        SELECT COUNT(*)
     111        FROM event_rsvp
     112        WHERE event_id = p_event_id
     113          AND status = 'accepted'
     114    );
     115END;
     116$$;
     117</pre>