39 lines
1.3 KiB
Markdown
39 lines
1.3 KiB
Markdown
# F_MAX_NUMERO_EVENTI_RAGGIUNTO
|
|
|
|
## Codice Sorgente
|
|
|
|
```sql
|
|
FUNCTION F_MAX_NUMERO_EVENTI_RAGGIUNTO
|
|
(
|
|
P_GIORNO IN DATE
|
|
) RETURN NUMBER AS
|
|
v_max_eventi TB_CALENDAR_LOCKS.max_eventi%TYPE; -- Variable to hold the max_eventi value from TB_CALENDAR_LOCKS
|
|
v_event_count NUMBER; -- Variable to hold the count of events from EVENTI
|
|
BEGIN
|
|
-- Step 1: Check if P_GIORNO is present in TB_CALENDAR_LOCKS and get the max_eventi value for that day
|
|
BEGIN
|
|
SELECT max_eventi
|
|
INTO v_max_eventi
|
|
FROM TB_CALENDAR_LOCKS
|
|
WHERE giorno = P_GIORNO;
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND THEN
|
|
-- If the date is not found in TB_CALENDAR_LOCKS, return -1 (or some other code to indicate the absence)
|
|
RETURN -1;
|
|
END;
|
|
|
|
-- Step 2: Count how many events occurred on P_GIORNO in the EVENTI table
|
|
SELECT COUNT(*)
|
|
INTO v_event_count
|
|
FROM EVENTI
|
|
WHERE TRUNC(DATA) = TRUNC(P_GIORNO); -- Use TRUNC to compare only the date part
|
|
|
|
-- Step 3: Compare the event count with the max_eventi and return the appropriate result
|
|
IF v_event_count >= v_max_eventi THEN
|
|
RETURN 1; -- Maximum number of events has been reached or exceeded
|
|
ELSE
|
|
RETURN 0; -- Maximum number of events has not been reached
|
|
END IF;
|
|
|
|
END F_MAX_NUMERO_EVENTI_RAGGIUNTO;```
|