パラメータに各 CSV 行を使用するクエリで、tsql を使用してストアド プロシージャを複数回実行しようとしています。
これをループするにはどうすればよいですか?
乾杯
パラメータに各 CSV 行を使用するクエリで、tsql を使用してストアド プロシージャを複数回実行しようとしています。
これをループするにはどうすればよいですか?
乾杯
これが(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を実行できるようになります。これには、複数のパラメーターを使用したストアドプロシージャの呼び出しも含まれます。
csvファイルをテーブルにインポートしてから、ループを設定して処理することをお勧めします.sprocを変更して、セットベースのデータを処理できます。