执行CSV中每行的存储过程

时间:2012-10-05 10:43:13

标签: sql-server tsql loops stored-procedures csv

我试图在查询中多次使用tsql运行存储过程,每个CSV行都有参数。

我如何循环使用它?

干杯

2 个答案:

答案 0 :(得分:3)

如果可以通过set base操作实现(按照AnnandPhadke的建议),那就是要走的路。效率更高。如果没有,您可以按如下方式使用光标:

将csv导入表ImportedCSV

DECLARE @sSQL AS VARCHAR(5000)
DECLARE @sItemsFromCSV

DECLARE sql_cursor CURSOR
    FOR SELECT ItemsFromCSV FROM ImportedCSV
OPEN sql_cursor

FETCH NEXT FROM sql_cursor 
INTO @ItemsFromCSV  -- Multiple variables for multiple CSV columns will be required

WHILE @@FETCH_STATUS = 0
BEGIN

@sSQL = 'EXEC USP_MyProc ' + @ItemsFromCSV  -- AND OTHER Parameters
EXECUTE sp_executesql @sSQL

FETCH NEXT FROM sql_cursor
END 
CLOSE sql_cursor;
DEALLOCATE sql_cursor;

这将允许在CSV中每行执行自定义SQL,包括调用具有多个参数的存储过程。

答案 1 :(得分:1)

我建议将csv文件导入到表中,然后通过seting insted of looping处理它。您可以修改您的sproc来处理基于集合的数据。