想象一下,我們有一個存盤程序dbo.MyStoredProcedure,它@Id以引數為引數,然后做一些作業。
我有一個包含超過 1000 行不同 ID 的 CSV。如何以最佳和最簡單的方式dbo.MyStoredProcedure對 CSV 檔案中的每個 ID 執行?
我不是特別想復制這個查詢:
EXEC dbo.MyStoredProcedure @Id: 75627
對于 CSV 中的每一行...
uj5u.com熱心網友回復:
理想情況下,您最好在評論中提到的 @larnu 之類的場景上作業。但是,如果您無法更改 proc,您會有點卡住...
如果您可以將 CSV 匯入表格,則可以使用 CURSOR。請注意在 SQL Server 中回圈幾乎總是不是最佳解決方案的強制性警告。
Declare @id INT;
DECLARE IDS CURSOR FOR
SELECT id FROM IdTable;
FETCH NEXT FROM IDS INTO @id;
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC dbo.MyStoredProcedure @Id = @id;
FETCH NEXT FROM IDS INTO @id;
END;
CLOSE IDS;
DEALLOCATE IDS;
另一種選擇是為電子表格(Excel、Google Sheets 等)中的每個 ID 生成 EXEC 陳述句。
- 在您最喜歡的電子表格應用程式中打開您的 CSV。假設您的資料位于 Col A 并從第 1 行 (A1) 開始
- 在 B1 中輸入一個公式,該公式將為 A1 中的 id 生成 EXEC。對于 Excel,那將是
="EXEC dbo.MyStoredProcedure @Id=" & A1 - 將 B1 復制到 Col A 中有值的每一行。您現在在 Col B 中為每個 id 都有一個 EXEC 陳述句
- 從 Col B 復制值并粘貼到 SSMS
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/477196.html
上一篇:回傳多次出現的不同結果
