Bonjour à tous,

Voilà, je cherche à écrire une requête en simple sql, me permettant d'exécuter une requête sous condition.
J'ai pu le faire en pl/sql sans problème :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
declare
v_heure_min varchar2(50);
v_heure_max varchar2(50);
v_req varchar2(400); 
 
begin
v_heure_min:='22:00';
v_heure_max:='02:00';
 
if v_heure_min<v_heure_max then
      v_req:='create table voirie.acc_temp_ok as select * from voirie.accident where heure between ''' ||  v_heure_min|| ''' and ''' ||v_heure_max ||'''';
else
      v_req:='create table voirie.acc_temp_nok as select * from voirie.accident where heure between ''' ||  v_heure_min|| ''' and ''23:59''
      union all select * from voirie.accident where heure between ''00:00'' and '''||  v_heure_max ||'''' ;
end if;
 
execute immediate v_req;
 
end;
/

Mais j'aimerai maintenant pouvoir l'écrire un peu sous cette forme, mais cette syntaxe ne fonctionne pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
select
 CASE 
    WHEN '22:00'<'23:00' THEN (select * from voirie.accident where heure between '22:00' and '23:00')
    ELSE (select * from voirie.accident where heure between '22:00' and '23:59' union all select * from voirie.accident where heure between '00:00' and '02:00')
END
from dual;
Je sais qu'il n'est pas correct d'écrire la requête en précisant les valeurs '22:00' et '23:00' (c'est un exemple), mais l'outil dans lequel elle va être insérée permettra de rentrer la valeur min (22:00) et la valeur max (23:00), saisi par l'utilisateur.

J'ai l'erreur suivante : ORA-00913: trop de valeurs

Je ne saisi pas le sens de cette erreur dans ce contexte.

Pourriez-vous m'orienter vers une solution, ou me donner quelques pistes?
Je vous remercie d'avance,