2

相関するこれら2つのテーブルがあり、基本的に書きたい

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

どうすればいいですか?急いで修正する必要があるストアド プロシージャの既存のコードは、次のようになります。

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

もちろん、論理的には、入れ子になった 2 つの for ループに似ています。私がしたいのは、列にある列で並べ替えられた2つのテーブルを圧縮し、既存のロジックをそのままにしておくことだけです。

4

1 に答える 1

0

選択したものはおそらく次のようになります。

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

ただし、なぜここにカーソルが必要なのかわかりません。おそらくあなたはこれらをループしようとしていますか?ハンドルのリークを回避するには、カーソルを宣言、オープン、クローズ、および割り当て解除する必要があります。構文はDBごとに異なる場合があります。開始するためのサンプル(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 に答える