SQL Server for循环记录

时间:2012-06-29 15:39:48

标签: sql-server

在Oracle中,我们可以使用

FOR employee_rec in (select id from mytbl)
LOOP
    DBMS_OUTPUT.PUT_LINE(employee_rec.id);
END LOOP;

在SQL Server中,我们有类似的东西吗?如果不是,如何进行此循环?

1 个答案:

答案 0 :(得分:6)

如果你想做正确的话,在SQL Server中会更加冗长:

DECLARE @id INT;

DECLARE c CURSOR LOCAL STATIC READ_ONLY FORWARD_ONLY
FOR SELECT id FROM mytbl;

OPEN c;

FETCH NEXT FROM c INTO @id;

WHILE @@FETCH_STATUS = 0
BEGIN
  PRINT @id;

  FETCH NEXT FROM c INTO @id;
END

CLOSE c;
DEALLOCATE c;

但是,通常我们倾向于避免循环和游标,因为关系数据库优于基于集合的操作(在几乎情况下)。当然也有例外,就像任何规则一样,但如果我不得不猜测我会怀疑你不需要循环去做你想要做的事情。你真的想做什么?为什么需要单独处理每一行?