Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Por que recebo ORA-00932:tipos de dados inconsistentes:esperado - obtido - ao usar COLLECT() em uma instrução preparada?


Finalmente consegui uma solução para este problema, graças a algumas escavações de um usuário. O problema não era com o espaço reservado; por que funcionou sem o espaço reservado na imagem do VirtualBox, não tenho ideia. Não, o problema era com o COLLECT() . Parece que ambos os valores que estão sendo coletados precisam ser convertidos em um tipo específico, e a matriz resultante também precisa ser convertida em um tipo de dados de matriz predefinido. Acontece que meu código tem um tipo de array personalizado:
CREATE TYPE sqitch_array AS varray(1024) OF VARCHAR2(512);

Então, posso fazer a consulta funcionar lançando o COLLECT() igual a:
CAST(COLLECT(CAST(t.tags as VARCHAR2(512))) AS sqitch_array)