我知道如何通过从另一个表中选择来插入,但我的问题有点复杂。我有如下表格。
表1:
Col1 | Col2 | Col3 | ..... | Col20
表2:
Col1 | Col2 | Col3 | ..... | Col20
两个表都相同。我想要做的是将表1中的所有值插入表2,但留下一列(比如Col20)。我想用我的自定义值插入该列。我可以通过映射1到1列来完成此操作。
Insert into table1(Col1, Col2, ..., Col20)
select Col1, Col2, ..., @customvalue
from table2
我会用这种方式,但我必须在存储过程中多次使用此查询,这使得存储过程冗长。但我想缩短这个查询。还有其他更好的方法吗?
答案 0 :(得分:1)
...但我必须在存储过程中多次使用此查询,这会使存储过程冗长....
最简单的方法是创建一个只执行插入的存储过程,然后在主存储过程中需要时调用它:
CREATE PROCEDURE CopyFromTable1ToTable2
(
@CustomValue int -- or whatever data type you need
)
AS
INSERT INTO Table1 (Col1, Col2... Col120)
SELECT Col1, Col2,.... @CustomValue
FROM Table2
然后,在您的主程序中,只需执行以下操作:
EXEC CopyFromTable1ToTable2 1
...
EXEC CopyFromTable1ToTable2 3
等等。
答案 1 :(得分:0)
尝试使用用户定义的表类型作为第二个表列集。将table2中的所有必需列定义为此新表类型。然后使用此表类型对象在查询中使用它来减少所需的代码。您可以构建新的UDF以供其重复使用,并将此新类型作为其参数之一传递。
https://technet.microsoft.com/en-us/library/bb522526(v=sql.105).aspx
我想你可以在存储过程中减少一些重复的SQL代码。它会使你的代码更加模块化和整洁。