我试图在查询中多次使用tsql运行存储过程,每个CSV行都有参数。
我如何循环使用它?
干杯
答案 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来处理基于集合的数据。