1

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

我将如何遍历这个?

干杯

4

2 回答 2

3

如果这可以通过一组基础操作来实现(如 AnnaandPhadke 所推荐的),那就是要走的路。效率更高。如果没有,您可以使用如下游标:

将 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,包括调用具有多个参数的存储过程。

于 2012-10-05T12:04:14.433 回答
1

我建议将 csv 文件导入到表中,然后通过设置循环设置来处理它。您可以修改存储过程以处理基于集合的数据。

于 2012-10-05T10:51:48.973 回答