2

我有这两个相关的表,我基本上想写

for r1, r2 in zip(table1, table2):
  ...

我该怎么做呢?我需要尽快修复的存储过程中的现有代码看起来像这样

cursor = select ... where table1.x = table2.x; # implied join
for row in cursor:
  ...

这当然在逻辑上就像两个嵌套的 for 循环。当我想做的只是压缩两个表时,现有代码会遇到各种麻烦,按它们在列中的列排序,然后保留现有逻辑。

4

1 回答 1

0

您的选择可能看起来像这样:

select *
from table1 t1
join table2 t2
    on t1.x = t2.x

但是,我不知道为什么你需要一个光标。也许您正在尝试遍历这些?游标必须被声明、打开、关闭和释放以避免句柄泄漏。语法可能因数据库而异。这里有一些示例 (MS) T-SQL 可以帮助您入门。

declare z_cur cursor for
    select t1.x, t2.y
    from table1 t1
    join table2 t2
        on t1.x = t2.x

declare @xVal varchar(100)
     , @yVal varchar(100)

open z_cur
fetch next from z_cur into @xVal, @yVal

while @@fetch_status = 0
begin
    -- do stuff here
    fetch next from z_cur into @xVal, @yVal
end

close z_cur
deallocate z_cur
于 2012-09-28T18:57:51.870 回答