我有两个表,我们可以称它们为 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
子句中,但是有很多列名,我只是想让它不要太笨重。
但是有很多列名,我只是想让它不要太笨重。
在 TSQL 中并不总是可以避免剪切和粘贴。将长列列表保持在一行上以启用剪切和粘贴而不浪费垂直空间
在 TSQL 中,INSERT 将在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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句