我有两个表,我们可以将它们称为table1和table2,还有一个变量来确定要插入哪个表。我想做这样的事情:
DECLARE @intoTable2 BIT = 0;
INSERT INTO
IF @intoTable2 = 1
table2
ELSE
table1
--put column names and values here...
除了第一个表外,两个表之间的所有列名都相同,因此我也需要为第一列使用相应的IF
语句。 (我可以只写出两个INSERT INTO
语句,然后将它们包装在IF-ELSE
子句中,但是列名很多,我只是想避免它太笨拙。>
答案 0 :(得分:1)
但是列名很多,我只是想避免它太笨拙。
在TSQL中并非总是可能避免剪切和粘贴。将长列列表保持在一行上,以实现剪切和粘贴操作,而不浪费垂直空间
在TSQL中,插入将在IF之后 。
DECLARE @intoTable2 BIT = 0;
IF @intoTable2 = 1
BEGIN
INSERT INTO table2 ( ... )
values ( ... );
END
ELSE
BEGIN
INSERT INTO table2 ( ... )
values ( ... );
END
或者您可以使用动态sql
declare @sql = concat(N'insert into ', case when @intoTable2 = 0 then 'table1' else 'table2' end, ' values ...')
--print(@sql)
exec (@sql)