我有以下代码,当然,我的真实代码很长很丑,没有人想看到它。逻辑非常简单,如果table_1插入了任何行,则忽略table_2。
table_1和table_2中都存在( long_common_column_list 和 long_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个字符。
我搜索但没有运气。任何帮助或提示表示赞赏。
答案 0 :(得分:1)
你可以使用动态sql - 将常见的Sql文本放在变量中,然后通过concatane使用不常见的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