這是我需要做的一個簡單例子。實際上,我想通過使用plsql中的遊標來應對來自另一個表的應答來更新一個表中的值。如何通過應對來自plsql中的另一個表來更新一個表中的值?
予取表f和表B作爲兩個實例:
f=
1|Thom
2|Bob
3|Steven
5|Arthur
b=
7|Nataly
9|Alfred
,其中I需要插入在第一的B的絲束線路f的兩行:
create table f (a number, b varchar2(10));
insert into f values (1,'Thom');
insert into f values (2,'Bob');
insert into f values (3,'Steven');
insert into f values (5,'Arthur');
commit;
create table b (c number, d varchar2(10));
insert into b values (7,'Nataly');
insert into b values (9,'Alfred');
commit;
create or replace procedure wco as
cursor c_f is
select a,b from f for update;
v_a f.a%type;
v_b f.b%type;
cursor c_b is
select c,d from b;
v_c b.c%type;
v_d b.d%type;
begin
open c_f;
open c_b
loop
fetch c_f into v_a, v_b;
exit when c_f%ROWCOUNT=c_b%RROWCOUNT;
update f set a=v_c and b=v_d where current of c_f;
end loop;
close c_d:
close c_f;
end;
/
exec wco;
select * from f;
drop table f;
預期的結果(我希望什麼都):
7|Nataly
9|Alfred
3|Steven
5|Arthur
但是我現在(的結果)是:
1|Thom
2|Bob
3|Steven
5|Arthur
我該如何解決這個問題,我是PLSQL的初學者,如果能幫助我,我將非常感激。
PL/SQL,當然,與Oracle,MySQL的不使用的語言。我編輯了你的標籤。 –
@ O.Jones謝謝 – tierrytestu
爲什麼你需要這樣做?這是你的家庭作業嗎?如果是這樣,你應該在解決方案中展示什麼?我問,因爲它不是經常需要在現實世界中完成的事情(即,用表2中的X行覆蓋表1中第一個X行的內容) - 通常它會根據某種類型合併行連接列(例如,一個ETL過程更新客戶的詳細信息等) – Boneist