create or replace procedure p_lx is
begin
UPDATE AB01_QHD1 t set t.w =1 where t.name in (select t.name from AB01_QHD1 t,AA01_QHD2 t2 where t.name=t2.name);
commit;
end p_lx;
怎么用游標的方式實作上面的程序 把sql陳述句換成游標的形式
uj5u.com熱心網友回復:
不到萬不得已,別用游標,很影響性能。
你這個根本不需要要用到游標。
--采用update陳述句
create or replace procedure p_lx
is
begin
update AB01_QHD1 t
set t.w = 1
where exists(select null from AA01_QHD2 t2 where t2.name = t1.name);
commit;
end p_lx;
--2.采用for回圈
create or replace procedure p_lx
is
begin
for res in (select name from AA01_QHD2) loop
update AB01_QHD1 set w = 1 where name = res.name;
end loop;
commit;
end p_lx;
uj5u.com熱心網友回復:
--1.采用update陳述句
create or replace procedure p_lx
is
begin
update AB01_QHD1 t
set t.w = 1
where exists(select null from AA01_QHD2 t2 where t2.name = t.name);
commit;
end p_lx;
uj5u.com熱心網友回復:
沒問題的話,可以結貼了。
uj5u.com熱心網友回復:
create or replace procedure p_lx isCURSOR C_EMP IS --宣告顯式游標
SELECT name FROM AA01_QHD2;
C_ROW C_EMP%ROWTYPE; --定義游標變數,該變數的型別為基于游標C_EMP的記錄
begin
--For 回圈
FOR C_ROW IN C_EMP LOOP
UPDATE AB01_QHD1 t set t.w = 1 where t.name = C_ROW.NAME;
commit;
END LOOP;
--Fetch 回圈
OPEN C_EMP; --必須要明確的打開和關閉游標
LOOP
FETCH C_EMP
INTO C_ROW;
EXIT WHEN C_EMP%NOTFOUND;
UPDATE AB01_QHD1 t set t.w = 1 where t.name = C_ROW.NAME;
commit;
END LOOP;
CLOSE C_EMP;
--While 回圈
OPEN C_EMP; --必須要明確的打開和關閉游標
FETCH C_EMP
INTO C_ROW;
WHILE C_EMP%FOUND LOOP
UPDATE AB01_QHD1 t set t.w = 1 where t.name = C_ROW.NAME;
commit;
FETCH C_EMP
INTO C_ROW;
END LOOP;
CLOSE C_EMP;
end p_lx;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/79246.html
標籤:開發
上一篇:未找到 Oracle 客戶端和網路組件。這些組件是由 Oracle 公司提供的,是 Oracle 7.3.3 版(或更高)客戶軟體安裝的一部分。
下一篇:菜鳥求助存盤程序
