1

パラメータに各 CSV 行を使用するクエリで、tsql を使用してストアド プロシージャを複数回実行しようとしています。

これをループするにはどうすればよいですか?

乾杯

4

2 に答える 2

3

これが(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を実行できるようになります。これには、複数のパラメーターを使用したスト​​アドプロシージャの呼び出しも含まれます。

于 2012-10-05T12:04:14.433 に答える
1

csvファイルをテーブルにインポートしてから、ループを設定して処理することをお勧めします.sprocを変更して、セットベースのデータを処理できます。

于 2012-10-05T10:51:48.973 に答える