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 :
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.
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;
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,
Partager