在 Oracle 中,我们可以使用
FOR employee_rec in (select id from mytbl)
LOOP
DBMS_OUTPUT.PUT_LINE(employee_rec.id);
END LOOP;
在 SQL Server 中,我们有类似的东西吗?如果没有,如何做这个循环?
在 Oracle 中,我们可以使用
FOR employee_rec in (select id from mytbl)
LOOP
DBMS_OUTPUT.PUT_LINE(employee_rec.id);
END LOOP;
在 SQL Server 中,我们有类似的东西吗?如果没有,如何做这个循环?
如果你想正确地做,它在 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;
但是,通常我们倾向于避免循环和游标,因为关系数据库擅长基于集合的操作(几乎在某些情况下)。当然也有例外,就像任何规则一样,但如果我不得不猜测,我会怀疑你不需要循环来做你想做的事情。你真正想做什么?为什么需要单独处理每一行?