日期:2014-05-17  浏览次数:20839 次

请教一个触发器的作用?
请教 这个触发器的作用?还有 Pkg_BldroomData_Part.v_NumEntries 的值是从那里传过来的?

Create Or Replace Trigger "PUBR".Tri_Bldroom_AllAiu_Part
After Insert Or Delete Or Update Of Part On bldroom
Declare
l_cnt number(8);
l_ecode bldroom.Ecode%type;
l_bldroomid bldroom.bldroomid%type;
l_businesstype bldroom.businesstype%type;
l_isEcodeMustUnique varchar2(100);
Begin
for v_LoopIndex in 1..Pkg_BldroomData_Part.v_NumEntries loop
--[获取变量]--
l_bldroomid := Pkg_BldroomData_Part.v_bldroomids(v_LoopIndex);
l_businesstype := Pkg_BldroomData_Part.v_businesstypes(v_LoopIndex);
---更新Ecode
select (select decode(hillno,'无',null,hillno) from building where buildid=br.buildid)||(select decode(buildno,'无',null,buildno)
from building where buildid=br.buildid)||part into l_ecode from bldroom br where bldroomid=l_bldroomid;
update bldroom set ecode=l_ecode where bldroomid=l_bldroomid;
--[判断Ecode是否唯一]--
--[获取系统参数]--
select value into l_isEcodeMustUnique from ttsysparams where paramid=376;
select count(bldroomid) into l_cnt from bldroom where resopertype=1 and businesstype=l_businesstype and Ecode=l_Ecode;
if l_cnt>1 then
if l_isEcodeMustUnique='-1' then
raise_application_error(-20001,'[当前房屋(bldroomid='||l_bldroomid||')对应房屋编号(Ecode)信息已经存在且有效,您不能维护重复的房屋编号!]');
end if;
end if;
end loop;
Pkg_BldroomData_Part.v_NumEntries := 0;
End Tri_Bldroom_AllAiu_Part;

------解决方案--------------------
看了下,我也很纳闷,帮忙顶下!!!
------解决方案--------------------
Pkg_BldroomData_Part.v_NumEntries

就是Pkg_BldroomData_Part包中声明的一个变量
------解决方案--------------------
Pkg_BldroomData_Part.v_NumEntries可能是一个类似数组的索引表
在Pkg_BldroomData_Part包的包头去找一下,例:
SQL code
--声明自定义索引表类型
type arrtype is table of number index by pls_integer;
--声明此类型的变量
a arrtype;