6

テーブルの列の 1 つに動的に構築された T SQL クエリを格納するテーブルがあります。私の要件は、形成されたクエリを実行する必要があり (私の場合、いくつかの挿入ステートメント)、行全体をトラバースして変数からステートメントを実行するために「while ループを使用したくない」ということです。また、カーソルを使用したくありません。このテーブルには、動的に形成された SQL 挿入ステートメントが約 500 万あります。以前にwhileループを使用してこのことを試しましたが、完了するまでに数日かかっていたため、削除しました。

4

1 に答える 1

4

「lakh」が何であるかを調べる必要がありました:)

他のコメントが言及しているように、これは DML への最適なアプローチではないため、リファクタリングを検討してください。そのままで、動的 SQL をバッチで組み合わせることができます。

DECLARE @sSQL nvarchar(max)
SET @sSQL = 'BEGIN TRAN; '

SELECT @sSQL = @sSQL + COLUMN_WITH_INSERT_STATEMENT  + '; '
FROM TABLE
WHERE [limit number of rows]

SET @sSQL = @sSQL + 'COMMIT TRAN '

EXEC(@sSQL)

このようにして、制御された数の INSERT ステートメントを単一のトランザクションに組み合わせることができます。WHERE ステートメントを使用して挿入の数を制御できます (WHERE ID BETWEEN 1 and 100一度に 100 個の INSERT を実行するなど)。 101 - 200、201 - 300 など)。

于 2013-08-26T16:21:02.130 に答える