PDA

View Full Version : [PL/SQL] - uso variabili con sysdate


sauron79
21-03-2014, 16:29
Ciao a tutti,

premetto che sono un neofita nel mondo db, sto creando una stored procedure e sono "inciampato" in un problema. Mi spiego meglio...

ho una serie di SELECT, lanciate una dietro l'altra e unite con il comando UNION. Le SELECT sono tutte uguali, tranne che per questo comando

ROUND((((TRUNC(sysdate-1)+2/24)....

è incrementale e arriva fino alle 23

...ROUND((((TRUNC(sysdate-1)+23/24)....

Vorrei automatizzare il tutto, tramite una stored procedure, in modo da avere una sola SELECT in un loop con il valore dopo il "+" che va ad aumentare fino al valore max. 23.

La variabile l'ho creata così:

FOR I IN 0..23
LOOP
IF I = 0 THEN
index_sysdate := null;
ELSE
index_sysdate := '+' || I || '/24';
END IF;
.....

La variabile la richiamo in questo modo:

ROUND((((TRUNC(sysdate-1) || index_sysdate)

Ottenendo però l'errore:

[Error] ORA-00932 (58: 45): PL/SQL: ORA-00932: inconsistent datatypes: expected CHAR got DATE

Qualcuno potrebbe spiegarmi dove sta l'errore? immagino si tratti del tipo dati definito per "index_sysdate" (dichiarato come varchar2(10)). Non saprei però come dichiararlo e se la sintassi di utilizzo della variabile è corretta.

Grazie a tutti,
Sauron79