簡體   English   中英

如何使用存儲過程將一個表的所有記錄插入另一個表

[英]How to insert all records of a table in another table using a stored procedure

我有一個大約有 13066 條記錄的表,我想在其中添加另一個表中的所有其他記錄(大約有 1346 條記錄)。 有一個執行插入的存儲過程,我想將它用於要插入的所有記錄。 有人可以幫忙嗎?

除非您沒有提供所有信息,否則就是這么簡單,例如“有重復項”或“僅當不存在時”

CREATE PROC DoSomething
AS
SET NOCOUNT ON
INSERT table1 (col1, col2, etc)
SELECT col1, col2, etc FROM table2
GO

編輯:

有什么東西不見了。

OP希望通過table2循環能夠調用現有的存儲過程

要正確地做到這一點,你會使用

INSERT table1 (col1, col2, etc)
SELECT col1, col2, etc FROM table2 t2
WHERE NOT EXISTS (SELECT * FROM table1 t1
                    WHERE t1.key = t2.key and <some conditions>) 

我可能誤解了您的問題,但您似乎想要執行一個存儲過程並將存儲過程的結果插入到您的主表中。

為此,您可以執行以下操作:

INSERT INTO dbo.YourMainTable
EXEC dbo.YourStoredProcedureName

編輯:

我能想到的唯一方法是使用 cursor。

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

這假設您的存儲過程從表 2 的每一行接受一個參數 select。

這不是 SQL 服務器的最佳用途,但如果你真的必須這樣做,那么我想不出任何其他方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM