View Full Version : [PL-SQL] Funzione conta festivi : errore debug
Ciao A tutti,
sto cercando di creare una funzione che restituisca il numero di giorni festivi ( sab e dom ) compresi in un intervallo di tempo.
La funzione deve accettare come parametri una data inizio e data fine periodo e restituire un intero.
Il codice è li seguente :
create or replace
FUNCTION FR_CALCOLA_GIORNI_FESTIVI (DATE_IN IN DATE, DATE_OUT IN DATE ) RETURN NUMBER IS
BEGIN
RETURN ( SELECT count(*)
FROM ( SELECT rownum rnum
FROM DM_CALENDARIO
WHERE rownum <= TO_DATE(DATE_IN, 'YYYY-MM-DD') - TO_DATE(DATE_OUT, 'YYYY-MM-DD') + 1)
where to_char(TO_DATE(DATE_IN, 'YYYY-MM-DD') + rnum - 1, 'DY' ) in ( 'SAB', 'DOM' ));
END FR_CALCOLA_GIORNI_FESTIVI;
Ma non capisco perchè non vada. il debug mi da un errore
" il programma non è in uno stato valido e non è eseguibile " . cosa ho sbagliato ??
Grazie mille per l'aiuto!
Ciao A tutti,
sto cercando di creare una funzione che restituisca il numero di giorni festivi ( sab e dom ) compresi in un intervallo di tempo.
La funzione deve accettare come parametri una data inizio e data fine periodo e restituire un intero.
Il codice è li seguente :
create or replace
FUNCTION FR_CALCOLA_GIORNI_FESTIVI (DATE_IN IN DATE, DATE_OUT IN DATE ) RETURN NUMBER IS
BEGIN
RETURN ( SELECT count(*)
FROM ( SELECT rownum rnum
FROM DM_CALENDARIO
WHERE rownum <= TO_DATE(DATE_IN, 'YYYY-MM-DD') - TO_DATE(DATE_OUT, 'YYYY-MM-DD') + 1)
where to_char(TO_DATE(DATE_IN, 'YYYY-MM-DD') + rnum - 1, 'DY' ) in ( 'SAB', 'DOM' ));
END FR_CALCOLA_GIORNI_FESTIVI;
Ma non capisco perchè non vada. il debug mi da un errore
" il programma non è in uno stato valido e non è eseguibile " . cosa ho sbagliato ??
Grazie mille per l'aiuto!
Ma ti da l'errore quando la crei (o cerchi di crearla) o quando la richiami?
Ciao, grazie per la risposta !
In fase di creazione , ho un'icona X sulla funzione appena creata ed avviando il debug mi da un errore .
La funzione non l'ho lanciata
DECLARE
FUNCTION FR_CALCOLA_GIORNI_FESTIVI (DATE_IN IN DATE, DATE_OUT IN DATE ) RETURN NUMBER IS GIORNI NUMBER (7,0);
BEGIN
GIORNI := ( SELECT count(*)
FROM ( SELECT rownum rnum
FROM DM_CALENDARIO
WHERE rownum <= TO_DATE(DATE_IN, 'YYYY-MM-DD') - TO_DATE(DATE_OUT, 'YYYY-MM-DD') + 1)
WHERE to_char(TO_DATE(DATE_IN, 'YYYY-MM-DD') + rnum - 1, 'DY' ) in ( 'SAB', 'DOM' ));
RETURN GIORNI;
END FR_CALCOLA_GIORNI_FESTIVI;
Errore: ORA-00922: opzione mancante o non valida
Ciao, grazie per la risposta !
In fase di creazione , ho un'icona X sulla funzione appena creata ed avviando il debug mi da un errore .
La funzione non l'ho lanciata
Ok, giusto per capire 'dove' ti potrebbe dare l'errore.
Sinceramente sto guardando la PL SQL e non mettendoci occhio da tempo non riesco ad individuare il problema; tra l'altro strani quei due where vicini, mi fanno un pò di 'senso'.
Lascio parola a chi è piu espero in questo campo :|
... tra l'altro strani quei due where vicini, mi fanno un pò di 'senso'.
sono 2 select annidate , il primo where è della select più interna, il secondo è di quella esterna. scusami per l'edit del testo
khelidan1980
24-09-2010, 13:50
DECLARE
FUNCTION FR_CALCOLA_GIORNI_FESTIVI (DATE_IN IN DATE, DATE_OUT IN DATE ) RETURN NUMBER IS GIORNI NUMBER (7,0);
BEGIN
GIORNI := ( SELECT count(*)
FROM ( SELECT rownum rnum
FROM DM_CALENDARIO
WHERE rownum <= TO_DATE(DATE_IN, 'YYYY-MM-DD') - TO_DATE(DATE_OUT, 'YYYY-MM-DD') + 1)
WHERE to_char(TO_DATE(DATE_IN, 'YYYY-MM-DD') + rnum - 1, 'DY' ) in ( 'SAB', 'DOM' ));
RETURN GIORNI;
END FR_CALCOLA_GIORNI_FESTIVI;
Errore: ORA-00922: opzione mancante o non valida
Devi fare Select into GIORNI
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.