Pergunta

Atualmente estou gerando SQL insert declarações de mais de uma mesa, e nos dados gerados eu preciso usar uma instrução CASE, como este:

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

Mas, neste ponto, se eu quero continuar a minha declaração com ... END CASE||','|| .... Eu não pode executar a consulta mais, como SAPO reclama de não encontrar a palavra chave FROM.

Uma solução rápida foi separar o ouput em campos, em seguida, salve-o em texto, e editar, mas deve haver uma maneira melhor.

Foi útil?

Solução

Use END em vez de CASE END

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

Outras dicas

Para algumas situações semelhantes, a função de "decodificar" funciona muito bem.

Você pode ser capaz de alimentar a expressão (t.f2> 0) em um decodificar e então traduzir 'T' em '1' e 'F' em '0'.

Eu não tentei isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top