如何解决如何使用存储过程将一个表的所有记录插入另一个表
| 我得到了一个包含约13066个记录的表,我想在其中添加另一个表(具有约1346个记录)中的所有其他记录。有一个存储过程执行插入操作,我想将其用于要插入的所有记录。谁能帮忙吗?解决方法
我可能对您的问题有误解,但似乎您想执行存储过程并将该存储过程的结果插入到主表中。
为此,您可以执行以下操作:
INSERT INTO dbo.YourMainTable
EXEC dbo.YourStoredProcedureName
编辑:
我能想到的唯一方法是使用游标。
DECLARE @PrimaryKeyFieldInTable2 int
DECLARE spCur CURSOR LOCAL FOR
SELECT PrimaryKetCol From Table2
OPEN spCur
FETCH NEXT FROM spCur INTO @PrimaryKeyFieldInTable2
WHILE @@FETCH_STATUS = 0 BEGIN
INSERT INTO dbo.Table1
EXEC dbo.YourStoredProceudre @PrimaryKeyFieldInTable2
FETCH NEXT FROM spCur INTO @PrimaryKeyFieldInTable2
END
CLOSE spCur
DEALLOCATE spCur
假定您的存储过程接受一个参数以从Table2中选择每一行。
这不是SQL Server的最佳用法,但是,如果您确实必须以这种方式进行操作,那么我想不出任何其他方式。
, 这很简单,除非您没有提供所有信息,例如“有重复项”或“仅当尚未存在时”
CREATE PROC DoSomething
AS
SET NOCOUNT ON
INSERT table1 (col1,col2,etc)
SELECT col1,etc FROM table2
GO
编辑:
缺少一些东西。
OP希望通过table2的循环能够调用现有的存储过程
要正确执行此操作,您将使用
INSERT table1 (col1,etc FROM table2 t2
WHERE NOT EXISTS (SELECT * FROM table1 t1
WHERE t1.key = t2.key and <some conditions>)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。