sql - SQL Server 中等效的 CURSOR 函数

标签 sql sql-server oracle cursor batch-processing

我想问一下 SQL Server 中的等效代码

我正在开展一个项目,其中由于数据库迁移,我们将把 unix 批处理转换为 windows 批处理。因为我在使用 shell 脚本和 oracle 的东西,所以我很难在 Windows 端工作。

我的问题是关于oracle sql使用的CURSOR。

谁能帮我转换下面的示例查询

sampleanimal.sql:

declare cursor getGM is
select dog as d, cat as c, fish as f
  from animals

begin
  for dr in getGM loop

    UPDATE zoo
      SET dogs = dr.d
          cats = dr.c
          fishes = dr.f
      ;

  end loop;
end;
/

commit;

quit; 

最佳答案

实际上,在这种情况下您不需要使用游标。尝试这样的事情-

UPDATE z
SET 
      dogs = a.dog
    , cats = a.cat
    , fishes = a.fish
FROM zoo z
JOIN animals a ON z.id = a.id

关于sql - SQL Server 中等效的 CURSOR 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17050789/

相关文章:

sql - 选择具有命名空间的列作为 XML

php - 在插入查询中选择查询

sql - 读取 xsi :type from T-SQL

mysql - SQL批量删除两个标记之间的文本内容

oracle - 在用新代码替换后,我可以从包体中恢复旧的 Oracle pl/sql 源代码吗

oracle - 根据日期列选择数据

c# - 当我用 C# 将一个 csv 文件放入 Sql Server 时,有些字段写错了?

sql-server - NLog、ASP.NET Core 和 SQL - 找不到服务器或无法访问服务器

java - JDBC SQL Server 十进制 "invented"精度

sql - 删除所有表时的 Oracle 性能