1

我有一个名为 @rows 的临时变量,在这样的存储过程中有近 10000 条记录

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

您可以根据一些条件直接更新表,并使用 CASE 语句 insted 使用 while 循环。

于 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 回答