微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用存储过程将一个表的所有记录插入另一个表

如何解决如何使用存储过程将一个表的所有记录插入另一个表

| 我得到了一个包含约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 举报,一经查实,本站将立刻删除。