Tipo de datos CLOB esperado
Me he quedado atascado en un problema y no tengo ni idea de qué hacer. En mi tabla tengo el tipo de columna CLOB y en mi SELECTuso esta columna y no puedo eliminar de la declaración de selección.
De alguna manera trato de cambiarlo a VARCHAR (255) pero mi tabla contiene datos y una tabla de respaldo y nuevamente la restauración me llevará tiempo. Hasta ahora, aquí está mi consulta SELECT:
SELECT * FROM
(SELECT a.*,
df.Name AS PaymentTypeName
FROM ata a
INNER JOIN debitform df ON a.PaymentType = df.Id
WHERE a.Deviation = '1'
AND a.ProjectID = 141
AND a.ParentAta = '0'
AND TYPE = 1
UNION
SELECT a.*,
df.Name AS PaymentTypeName
FROM ata a
INNER JOIN debitform df ON a.PaymentType = df.Id
WHERE a.Deviation = '1'
AND a.ProjectID = 141
AND a.ParentAta = '0'
AND TYPE = 0
AND a.BecomeExternalAtaFromInternal = 1) a
Esto da error:
ERROR en la línea 1:
ORA-00932: tipos de datos inconsistentes: esperado - consiguió clob
Cualquier sugerencia y comentario sobre qué hacer para eliminar este tipo de errores.
Respuestas
Recibe este error debido a la cláusula UNION. UNION implementa una operación de ordenación distinta, y no podemos hacerlas en CLOB.
La opción más sencilla es cambiar a UNION ALL. En teoría, esto podría introducir duplicados en el conjunto de resultados final, aunque parecería poco probable dados los criterios WHERE para cada subconsulta.
Alternativamente, parece que puede eliminar la UNIÓN por completo, reescribiendo su consulta de esta manera:
SELECT * FROM
(SELECT a.*,
df.Name AS PaymentTypeName
FROM ata a
INNER JOIN debitform df ON a.PaymentType = df.Id
WHERE a.Deviation = '1'
AND a.ProjectID = 141
AND a.ParentAta = '0'
AND (TYPE = 1
OR (TYPE = 0
AND a.BecomeExternalAtaFromInternal = 1)
)
)a
Este enfoque podría ser más eficaz.