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
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