Pregunta

Actualmente estoy generando instrucciones de inserción SQL de más de una tabla, y en los datos generados necesito usar una declaración CASE, como esta:

select 'INSERT INTO TABLE1 (f1, f2, f3, f4 ...) values ('
       ||t.f1||','
       ||CASE
             WHEN t.f2 > 0 THEN '1'
             ELSE '0'
         END CASE
  from table2 t , table3 t3

Pero en este punto si quiero continuar mi declaración con ... END CASE || ',' || .... ya no puedo ejecutar la consulta, ya que TOAD se queja de no encontrar la palabra clave FROM.

Una solución rápida fue separar la salida en campos, luego guardarla en texto y editar, pero debe haber una mejor manera.

¿Fue útil?

Solución

Use END en lugar de END CASE

select 'INSERT INTO TABLE1 (f1, f2, f3, f4 ...) values ('
       ||t.f1||','
       ||CASE
             WHEN t.f2 > 0 THEN '1'
             ELSE '0'
         END||','||t.f2
  from table2 t , table3 t3

Otros consejos

Para algunas situaciones similares, la "decodificación" La función funciona bastante bien.

Es posible que puedas introducir la expresión (t.f2 > 0) en una decodificación y luego traducirla 'T' en '1' y 'F' en '0'.

No he probado esto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top