私は毎日11PMまで実行したいwhileループクエリを持っています。これはWAITFOR文で実現でき、クエリを終了することができます。停止したところからWHILEループを再開SQL
ただし、翌日にクエリを再実行すると、前回の実行で停止した場所から続行します。だから私は、最後に処理されたIDを含むログテーブルを作成することを考えています。
どうすればこの問題を解決できますか?
DECLARE @MAX_Value BIGINT = (SELECT MAX(ID) FROM dbo.TableA)
DECLARE @MIN_Value BIGINT = (SELECT MIN(ID) FROM dbo.TableA)
WHILE (@MIN_Value < @MAX_Value)
BEGIN
INSERT INTO dbo.MyResults
/* Do some processing*/
….
….
….
SET @MIN_Value = MIN_Value + 1
/*I only want the above processing to run until 11PM*/
/* Once it’s 11PM, I want to save the last used @MIN_Value
into my LoggingTable (dbo.Logging) and kill the above processing.*/
/* Once I re-run the query I want my processing to restart from the
above @MIN_Value which is recorded in dbo.Logging */
END
この質問に答える前に...それが表示されますあなたの実際の問題に対して間違った種類のソリューションを使用しようとしていることを私に教えてください。このWHILEループを実装して解決しようとしている問題は何ですか? SQL Serverを実行していますか? –
はい、私はSQL Serverを使用しています。私はこれを行う仕事を作ることができたことを知っています。しかし、私はT-SQLを使ってそれを解決したいと思います。 – Dias
あなたのループが解決しようとしている実際の問題は何ですか?ユースケース(ビジネスシナリオ)は何ですか?あなたは何かを処理している/ものを計算していますか これで、SQLで答えます。 –