Oracle
 sql >> Base de données >  >> RDS >> Oracle

Pourquoi est-ce que j'obtiens ORA-00932 :types de données incohérents :attendu - obtenu - lors de l'utilisation de COLLECT() dans une instruction préparée ?

Enfin obtenu une solution à ce problème, grâce à quelques recherches par un utilisateur. Le problème n'était pas avec l'espace réservé; pourquoi cela a fonctionné sans l'espace réservé sur l'image VirtualBox, je n'en ai aucune idée. Non, le problème était avec le COLLECT() . Il semble que les deux valeurs collectées doivent être converties en un type spécifique, et le tableau résultant doit également être converti en un type de données de tableau prédéfini. Il se trouve que mon code a un type de tableau personnalisé :

CREATE TYPE sqitch_array AS varray(1024) OF VARCHAR2(512);

Je peux donc faire fonctionner la requête en lançant le COLLECT() comme ça :

CAST(COLLECT(CAST(t.tags as VARCHAR2(512))) AS sqitch_array)