0

もちろん、次のコードがあります。私の実際のコードは長くて醜く、誰も見たくありません。ロジックは非常に単純です。table_1 に行が挿入されている場合、table_2 を無視します。

( long_common_column_listlong_common_where_listが table_1 と table_2の両方に存在する)

insert into tmp_table
  select id, long_common_column_list from table_1 where long_common_where_list = 1 and
  column_only_in_table_1 = @param1

if @@rowcount=0
  insert into tmp_table
    select id, long_common_column_list from table_2 where long_common_where_list = 1 and
   column_only_in_table_2 = @param2

2 つの挿入を結合して長い長いリストを再利用するにはどうすればよいですか? 私のコードの挿入スクリプトは、それぞれ 2000 文字近くあり、はるかに長くなります。

検索しましたが、運がありません。ヘルプやヒントをいただければ幸いです。

4

1 に答える 1

1

動的 SQL を使用できます。一般的な SQL テキストを変数に入れ、一般的でない SQL テキストを連結して両方のクエリを作成します。

このようなもの

Declare @sql nvarchar(max),@sql1 nvarchar(max),@sql2 nvarchar(max)

set @sql =  ' select id, long_common_column_list from '
SEt @sql1 = ' where long_common_where_list = 1 and '


SEt @sql2 = @sql + '  table_1 '+@sql1 +' column_only_in_table_1 = @param1' + char(13)+
        ' if @@rowcount=0 ' +  char(13) +
        @sql + ' table_2 ' +  @sql1 + ' column_only_in_table_2 = @param2'

--print @sql2
exec sp_executesql @SQl2
于 2013-04-02T12:22:03.293 に答える