Bonjour à tous,

En cette fin de semaine je ne pensais pas tomber sur un problème de SQL.

J'explique :

Je suis sur Oracle 11g.

J'ai un type de table MONTYPEDETABLE défini ainsi :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
create or replace TYPE  "MONTYPEDETABLE" AS TABLE OF VARCHAR2(4000);
Et j'effectue la requête suivante :

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 * FROM (
  SELECT
    d.code_dest,
    l.id_livraison,
    l.code_livr,
    l.nom_lieu_livr,
    l.pays_livr
  FROM
    LIVRAISON l, 
    DESTINATAIRES d
  WHERE
    l.id_destinataire = d.id_destinataire
) 
QRSLT  WHERE ( 
  ( 
    code_dest MEMBER OF (
      CAST ( 
        ( 
          SELECT d2.code_dest from DESTINATAIRES d2 WHERE d2.code_dest='XXXXXX' 
        ) 
        AS MONTYPEDETABLE
      )
    )
  ) 
) 
ORDER BY "CODE_LIVR";
Une exception est remontée :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
ORA-00932: types de données incohérents ; attendu : - ; obtenu : CHAR
00932. 00000 -  "inconsistent datatypes: expected %s got %s"
*Cause:    
*Action:
Erreur à la ligne 19, colonne 17
L'erreur provient du CAST( ... AS MONTYPEDETABLE).

Le type de DESTINATAIRES.CODE_DEST est VARCHAR2(20).

Si vous avez des pistes de correction je prend.

Merci