Bonjour à tous,

J'en viens à essayer de trouver une réponse parmi les dieux du SQL oracle. Car je bloque sur un problème incompréhensible (par moi, du moins)

J'ai construit une requète un peu complexe mais qui tourne:
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
31
32
33
34
35
36
37
38
select param.Code_ECHANGE "codeEchange", 
       param.type_commande "typeCommande", 
       o.ROW_ID "idCmdSiebel", 
       param.ROW_ID "IdMatriceTechnique",
       ext.ATTRIB_34 "refCmdPortail",
       idldcom.CHAR_VAL "idDossier",
       cli.INTEGRATION_ID "idIntegration",
       cli.ROW_ID "client.idClient",
       con.PER_TITLE "client.civilite",
       con.LAST_NAME "client.nom",
       con.FST_NAME "client.prenom",
       con.HOME_PH_NUM "client.telContactPrincipal",
       com.ADDR "client.telContactSecondaire",
       con.EMAIL_ADDR "client.adresseMailContact",
       clix.ATTRIB_34 "client.codeApporteur",
       titulaireLigne.CHAR_VAL "client.nomPrenomTitulaireLigne",
       TypePorta.CHAR_VAL ,
       operateurCedant.CHAR_VAL
  from s_ORDER o 
       inner join S_ORG_EXT cli    on o.accnt_id = cli.ROW_ID
       inner join S_ORG_EXT_X clix on cli.ROW_ID = clix.par_row_id  
       inner join S_EVT_ACT evt    on o.X_ACTIVITY_Id = evt.ROW_ID
       inner join S_EVT_ACT_X ext  on evt.row_id = ext.par_row_id
       inner join S_CONTACT con    on con.row_id = cli.pr_con_id
       inner join s_CON_ADDR ca    on ca.accnt_id =cli.ROW_ID
       inner join S_ADDR_PER addr  on ca.ADDR_PER_ID = addr.ROW_ID and addr.ownership_cd = 'Technique'
       inner join S_ORDER_ITEM oi_Fibre  on o.ROW_ID = oi_Fibre.ORDEr_ID
       inner join S_PROD_INT prd_fibre   on oi_FIBRE.PROD_ID = prd_fibre.ROW_ID and prd_fibre.Name = 'Prise Fibre optique'
       left outer join S_ORDER_ITEM oi_PortaOBL  on o.ROW_ID = oi_PortaOBL.ORDEr_ID and oi_PortaOBL.prod_id ='1-29E7BWG'
       left outer join S_PER_COMM_ADDR com on con.PR_ALT_PH_NUM_ID = com.ROW_ID
       left outer join CX_EAI_SUG_CMD exp   on o.ROW_ID = exp.id_cmd
       left outer join CX_SUGAR_PARAM param on exp.id_tango_param = param.row_id
       left outer join S_ORDER_ITEM_XA idldcom on oi_Fibre.ROW_ID = idldcom.order_item_id and idldcom.ATTR_NAME ='ID_LDCOM'
       left outer join S_ORDER_ITEM_XA titulaireLigne on oi_Fibre.ROW_ID = titulaireLigne.order_item_id and titulaireLigne.ATTR_NAME ='Titulaire Ligne'
       left outer join S_ORDER_ITEM_XA TypePorta on oi_Fibre.ROW_ID = TypePorta.order_item_id and TypePorta.ATTR_NAME ='type portabilité'
       left outer join S_ORDER_ITEM_XA operateurCedant on oi_PortaOBL.ROW_ID = operateurCedant.order_item_id and operateurCedant.ATTR_NAME ='Opérateur cédant'
       left outer join S_ORDER_ITEM_XA NdiOblTiers on oi_PortaOBL.ROW_ID = NdiOblTiers.order_item_id and NdiOblTiers.ATTR_NAME ='NDI OBL tiers'
where o.ROW_Id = '1-34BUN6Z'
ça tourne quasi instantanément.
mais si je rajoute une seule colonne fixe (valeur constante), la requête ne me rends plus la main et ora renvoit un ORA-17410

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
31
32
33
34
35
36
37
38
39
select param.Code_ECHANGE "codeEchange", 
       param.type_commande "typeCommande", 
       o.ROW_ID "idCmdSiebel", 
       param.ROW_ID "IdMatriceTechnique",
       ext.ATTRIB_34 "refCmdPortail",
       idldcom.CHAR_VAL "idDossier",
       cli.INTEGRATION_ID "idIntegration",
       cli.ROW_ID "client.idClient",
       con.PER_TITLE "client.civilite",
       con.LAST_NAME "client.nom",
       con.FST_NAME "client.prenom",
       con.HOME_PH_NUM "client.telContactPrincipal",
       com.ADDR "client.telContactSecondaire",
       con.EMAIL_ADDR "client.adresseMailContact",
       clix.ATTRIB_34 "client.codeApporteur",
       titulaireLigne.CHAR_VAL "client.nomPrenomTitulaireLigne",
       TypePorta.CHAR_VAL ,
       operateurCedant.CHAR_VAL,
       'toto' ERREUR
  from s_ORDER o 
       inner join S_ORG_EXT cli    on o.accnt_id = cli.ROW_ID
       inner join S_ORG_EXT_X clix on cli.ROW_ID = clix.par_row_id  
       inner join S_EVT_ACT evt    on o.X_ACTIVITY_Id = evt.ROW_ID
       inner join S_EVT_ACT_X ext  on evt.row_id = ext.par_row_id
       inner join S_CONTACT con    on con.row_id = cli.pr_con_id
       inner join s_CON_ADDR ca    on ca.accnt_id =cli.ROW_ID
       inner join S_ADDR_PER addr  on ca.ADDR_PER_ID = addr.ROW_ID and addr.ownership_cd = 'Technique'
       inner join S_ORDER_ITEM oi_Fibre  on o.ROW_ID = oi_Fibre.ORDEr_ID
       inner join S_PROD_INT prd_fibre   on oi_FIBRE.PROD_ID = prd_fibre.ROW_ID and prd_fibre.Name = 'Prise Fibre optique'
       left outer join S_ORDER_ITEM oi_PortaOBL  on o.ROW_ID = oi_PortaOBL.ORDEr_ID and oi_PortaOBL.prod_id ='1-29E7BWG'
       left outer join S_PER_COMM_ADDR com on con.PR_ALT_PH_NUM_ID = com.ROW_ID
       left outer join CX_EAI_SUG_CMD exp   on o.ROW_ID = exp.id_cmd
       left outer join CX_SUGAR_PARAM param on exp.id_tango_param = param.row_id
       left outer join S_ORDER_ITEM_XA idldcom on oi_Fibre.ROW_ID = idldcom.order_item_id and idldcom.ATTR_NAME ='ID_LDCOM'
       left outer join S_ORDER_ITEM_XA titulaireLigne on oi_Fibre.ROW_ID = titulaireLigne.order_item_id and titulaireLigne.ATTR_NAME ='Titulaire Ligne'
       left outer join S_ORDER_ITEM_XA TypePorta on oi_Fibre.ROW_ID = TypePorta.order_item_id and TypePorta.ATTR_NAME ='type portabilité'
       left outer join S_ORDER_ITEM_XA operateurCedant on oi_PortaOBL.ROW_ID = operateurCedant.order_item_id and operateurCedant.ATTR_NAME ='Opérateur cédant'
       left outer join S_ORDER_ITEM_XA NdiOblTiers on oi_PortaOBL.ROW_ID = NdiOblTiers.order_item_id and NdiOblTiers.ATTR_NAME ='NDI OBL tiers'
where o.ROW_Id = '1-34BUN6Z'
Est-ce que quelqu'un aurait une idée ????