2

現在、複数のテーブルから 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 キーワードが見つからないと文句を言うため、クエリを実行できません。

簡単な解決策は、出力をフィールドに分割し、テキストに保存して編集することでしたが、もっと良い方法があるはずです。

4

2 に答える 2

3

END 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
于 2008-09-29T10:04:49.970 に答える
1

いくつかの同様の状況では、「デコード」機能が非常にうまく機能します。

式 (t.f2 > 0) をデコードしてから、「T」を「1」に、「F」を「0」に変換できる場合があります。

私はこれを試していません。

于 2008-09-29T10:00:03.210 に答える