私は次のクエリwhileループなしで次のクエリを記述して効率を改善できますか?
SELECT @MinID = MIN(ID), @MaxID = MAX(ID)
FROM #stp
WHILE (@MinID <= @MaxID AND IsNull(@MaxID, 0) > 0)
BEGIN
SELECT @result_mstr_id = result_mstr_id
FROM #stp
WHERE ID = @MinID
EXECUTE @err = f_rslm_publish @result_mstr_id
UPDATE dbo.results
SET result_stat_cd = CASE result_stat_cd
WHEN 'IP' THEN 'C'
WHEN 'IS' THEN 'S'
ELSE result_stat_cd
END
WHERE result_mstr_id = @result_mstr_id
SELECT @MinID = @MinID + 1
END
その典型的なループはカウンタによって供給されている操作を行うことができますが、私は1つのクエリになるこの再記述することができ、他の方法はありますか?
'f_rslm_publish'とは何ですか? –
あなたのサンプルコードはずっと簡単でした。 'IF @@ error!= 0 GOTO ERROR'ステートメントは無関係で気を散らすものです。そして、 'UPDATE'クエリも無関係です。テーブルの列に格納されている複数の値のストアドプロシージャを実行していることをシナリオの重要な要素であることを示すために、質問のタイトルを編集するといいでしょう。 –
申し訳ありませんケンニさん - 私にそれをさせてください – Rob