user表中有id,m,n,k四個欄位。現在k為空。

寫一個存盤程序proc_test:
傳入引數:id=3,a=2008,b=2012.
實作目的:依次給每行的欄位k賦值。
(從m=2008開始,回圈到2012
如果n是0,代表沒繳費,將當前行的k設為空。
如果n是2,代表繳費了,再看上一年的k值是否為空,如果不為空,將當前行的k值設為與上一年的相同k值。
如果上一年的K值為空,將當前行的K值設為當前行的m值.
uj5u.com熱心網友回復:
create or replace PROCEDURE proc_test
(v_id in varchar2,
a in varchar2,
b in varchar2
)
is
v_n varchar2(10);
begin
for i in a..b loop
select n into v_n from user where m=i and id=v_id;
if v_n=0 then
update user set k is null where m=i and id=v_id;
elseif v_n=2 then
update user set k=nvl(lag(n)over(order by m),m) where m=i and id=v_id;
end if;
commit;
end loop;
end proc_test;
uj5u.com熱心網友回復:
create or replace PROCEDURE proc_test
(v_id in varchar2,
a in varchar2,
b in varchar2
)
is
v_n varchar2(10);
begin
for i in a..b loop
select n into v_n from user where m=i and id=v_id;
if v_n=0 then
update user set k is null where m=i and id=v_id;
elseif v_n=2 then
update user set k=nvl(lag(n)over(order by m),m) where m=i and id=v_id;
end if;
commit;
end loop;
end proc_test;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/102125.html
標籤:開發
