Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Warum erhalte ich ORA-00932:inkonsistente Datentypen:erwartet - erhalten - wenn ich COLLECT() in einer vorbereiteten Anweisung verwende?

Endlich eine Lösung für dieses Problem, dank einiger Recherchen eines Benutzers. Das Problem war nicht der Platzhalter; Warum es ohne den Platzhalter auf dem VirtualBox-Image funktioniert hat, habe ich keine Ahnung. Nein, das Problem lag bei COLLECT() . Scheint, dass beide gesammelten Werte in einen bestimmten Typ umgewandelt werden müssen, und Das resultierende Array muss auch in einen vordefinierten Array-Datentyp umgewandelt werden. Es passiert einfach so, dass mein Code einen benutzerdefinierten Array-Typ hat:

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

Ich kann also die Abfrage zum Laufen bringen, indem ich COLLECT() umwandele so:

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