Вопрос

В настоящее время я генерирую операторы вставки SQL из нескольких таблиц, и в сгенерированных данных мне нужно использовать оператор CASE, например:

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

Но на данный момент, если я хочу продолжить свое выступление с ... END CASE||','|| .... Я больше не могу выполнить запрос, так как TOAD жалуется, что не нашел ключевого слова FROM.

Быстрое решение заключалось в том, чтобы разделить выходные данные на поля, затем сохранить их в виде текста и отредактировать, но должен быть лучший способ.

Это было полезно?

Решение

Используйте END вместо 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

Другие советы

В некоторых подобных ситуациях функция «декодирования» работает вполне хорошо.

Возможно, вы сможете подавать выражение (t.f2> 0) в декод, а затем перевести «t» в «1» и «f» в '0'.

Я не пробовал это.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top