Bonjour,
J'ai une requete qui fonctionne comme attendue, mais lorsque je la mets en format XML, j'ai une erreur qui apparait.
Je pars de cette requète :
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
SELECT NON_CTL_AREA_NAME ,
      (SELECT min(LOWER_LEVEL)
	 	    FROM R_NCA_VO r, VOLUME v					
	 	    WHERE r.AIRSPACE_ENV_NAME=c.AIRSPACE_ENV_NAME
	   	      and v.AIRSPACE_ENV_NAME=r.AIRSPACE_ENV_NAME
	   	      and r.NON_CTL_AREA_NAME=gl.NON_CTL_AREA_NAME#N_C_AREA
	   	      and v.VOLUME_NAME=r.VOLUME_NAME)
FROM N_C_AREA c,GRAPHICAL_LINE_SURF gl
WHERE gl.AIRSPACE_ENV_NAME = c.AIRSPACE_ENV_NAME
  and gl.NON_CTL_AREA_NAME#N_C_AREA = c.NON_CTL_AREA_NAME
  and c.AIRSPACE_ENV_NAME = 'MAASNEW';   
 
NON_CTL_AREA
------------
(SELECTMIN(LOWER_LEVEL)FROMR_NCA_VOR,VOLUMEVWHERER.AIRSPACE_ENV_NAME=C.AIRSPACE_
--------------------------------------------------------------------------------
NORB
                                                                             195
Mis à la sauce XML, cela donne ça :
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
SELECT XMLPARSE(document XMLSERIALIZE(document(
SELECT
XMLELEMENT("ReservedAreaList",
(SELECT XMLAgg(
   XMLELEMENT("ReservedArea",
      XMLELEMENT("ReservedAreaName", NON_CTL_AREA_NAME ),
      (SELECT XMLAgg(
      	  XMLELEMENT("MinFlightLevel",min(LOWER_LEVEL)))
	 	    FROM R_NCA_VO r, VOLUME v					
	 	    WHERE r.AIRSPACE_ENV_NAME=c.AIRSPACE_ENV_NAME
	   	      and v.AIRSPACE_ENV_NAME=r.AIRSPACE_ENV_NAME
	   	      and r.NON_CTL_AREA_NAME=gl.NON_CTL_AREA_NAME#N_C_AREA
	   	      and v.VOLUME_NAME=r.VOLUME_NAME)))
FROM N_C_AREA c,GRAPHICAL_LINE_SURF gl
WHERE gl.AIRSPACE_ENV_NAME = c.AIRSPACE_ENV_NAME
  and gl.NON_CTL_AREA_NAME#N_C_AREA = c.NON_CTL_AREA_NAME
  and c.AIRSPACE_ENV_NAME = 'MAASNEW')
) from dual
))) from dual;
Par contre si j'enlève le min(LOWER_LEVEL), la requète s'exécute :
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
21
22
23
24
25
26
27
SELECT XMLPARSE(document XMLSERIALIZE(document(
SELECT
XMLELEMENT("ReservedAreaList",
(SELECT XMLAgg(
   XMLELEMENT("ReservedArea",
      XMLELEMENT("ReservedAreaName", NON_CTL_AREA_NAME ),
      (SELECT XMLAgg(
      	  XMLELEMENT("MinFlightLevel",LOWER_LEVEL))
	 	    FROM R_NCA_VO r, VOLUME v					
	 	    WHERE r.AIRSPACE_ENV_NAME=c.AIRSPACE_ENV_NAME
	   	      and v.AIRSPACE_ENV_NAME=r.AIRSPACE_ENV_NAME
	   	      and r.NON_CTL_AREA_NAME=gl.NON_CTL_AREA_NAME#N_C_AREA
	   	      and v.VOLUME_NAME=r.VOLUME_NAME)))
FROM N_C_AREA c,GRAPHICAL_LINE_SURF gl
WHERE gl.AIRSPACE_ENV_NAME = c.AIRSPACE_ENV_NAME
  and gl.NON_CTL_AREA_NAME#N_C_AREA = c.NON_CTL_AREA_NAME
  and c.AIRSPACE_ENV_NAME = 'MAASNEW')
) from dual
))) from dual;	   
 
<ReservedAreaList>
  <ReservedArea>
    <ReservedAreaName>NORB</ReservedAreaName>
    <MinFlightLevel>245</MinFlightLevel>
    <MinFlightLevel>195</MinFlightLevel>
  </ReservedArea>
</ReservedArea
Il ne reste plus qu'à trouver un moyen pour n'avoir que la ligne avec 195 ! Mais cette différence de comportement m'est incompréhensible.

Au cas ou mes tables :
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
21
22
23
24
25
26
27
28
29
30
SQL>  desc graphical_line_surf
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 AIRSPACE_ENV_NAME                         NOT NULL VARCHAR2(20)
 NAME                                      NOT NULL VARCHAR2(6)
 AIRSPACE_ENV_NAME#N_C_AREA                         VARCHAR2(20)
 NON_CTL_AREA_NAME#N_C_AREA                         VARCHAR2(12)
 
SQL> desc n_c_area
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 AIRSPACE_ENV_NAME                         NOT NULL VARCHAR2(20)
 NON_CTL_AREA_NAME                         NOT NULL VARCHAR2(12)
 
SQL> desc r_nca_vo
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 AIRSPACE_ENV_NAME                         NOT NULL VARCHAR2(20)
 NON_CTL_AREA_NAME                         NOT NULL VARCHAR2(12)
 AIRSPACE_ENV_NAME_A                       NOT NULL VARCHAR2(20)
 VOLUME_NAME                               NOT NULL VARCHAR2(20)
 ORDER_NUMBER                                       NUMBER(38)
 
SQL> desc volume
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 AIRSPACE_ENV_NAME                         NOT NULL VARCHAR2(20)
 VOLUME_NAME                               NOT NULL VARCHAR2(20)
 LOWER_LEVEL                               NOT NULL NUMBER(38)
 UPPER_LEVEL                               NOT NULL NUMBER(38)
Merci de votre aide