0

我有如下代码,当然,我的真实代码又长又丑,没人愿意看。逻辑很简单,如果table_1插入了任何行,则忽略table_2。

(table_1 和 table_2 中都存在long_common_column_listlong_common_where_list )

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

如何结合这两个插入并重用长长的列表?我的代码中的插入脚本要长得多,每个脚本有近 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 回答