1

このようなストアド プロシージャに 10000 近くのレコードを持つ @rows という名前の一時変数があります。

Create Procedure input
as
begin
declare @input_data table(......)
insert into (.....) from ....
@rows= select @@rowcount
while(@rows > o)
begin
--- I need to process each row like
select ... where @row=1 --like this repeatedly upto @rows = 10000
end

どうすればこれを達成できますか。助けてください よろしくお願いします

4

2 に答える 2

0

いくつかの条件に基づいて、while ループを使用する代わりに CASE ステートメントを使用して、テーブルを直接更新できます。

于 2012-09-21T07:47:16.933 に答える
0

CURSOR を使用して目標を達成することができます

DECLARE @ID AS INT

DECLARE TestCursor CURSOR
FOR (SELECT ID FROM Test)

OPEN TestCursor
    FETCH NEXT FROM TestCursor INTO @ID

    WHILE @@Fetch_Status = 0
    BEGIN
        --Your Code Here
        PRINT  @ID --Print For Testing
        FETCH NEXT FROM TestCursor INTO @ID
    END

CLOSE TestCursor
DEALLOCATE TestCursor

覚えておいてください:カーソルを使用するとパフォーマンスが低下します代わりに、別の回答で説明されているように、条件付き選択/更新のクエリで CASE ステートメントを使用します

于 2012-09-21T07:53:27.067 に答える