3,491
社区成员
发帖
与我相关
我的任务
分享
create or replace function IndexInfoClassFDown(
ID NUMBER)
RETURN NUMBER
as
currZone tbindexinfoclass.zonearea%Type; /**//*定义临时变量*/
downZone tbindexinfoclass.zonearea%Type;
downid tbindexinfoclass.id%Type;
retval number;
begin
retval:=0;
select zonearea into currZone from tbindexinfoclass where tbindexinfoclass.id=ID and rownum=1;
select max(t.id) into downid from (select * from tbindexinfoclass where tbindexinfoclass.zonearea>currZone and islock=0 order by zonearea asc) t
where rownum=1;
/*savepoint point1;*/
if downid is not null then
select zonearea INTO downzone from tbindexinfoclass where tbindexinfoclass.id=downid AND rownum=1;
update tbindexinfoclass set zonearea=currZone where tbindexinfoclass.id=downid;
retval:=retval+SQL%ROWCOUNT; /* SQL%ROWCOUNT 为1*/
update tbindexinfoclass set zonearea=downzone where tbindexinfoclass.id=ID;
DBMS_OUTPUT.PUT_LINE(SQL%ROWCOUNT); /* SQL%ROWCOUNT 为3 为什么不懂*/
retval:=retval+SQL%ROWCOUNT;
end if;
COMMIT;
IF RetVal<2 THEN
ROLLBACK;
END IF;
RETURN retval;
end;