这是一个匿名块的过程部分,它需要参数pID,即包裹ID。我的问题是select语句旨在查找并显示所有与查询包裹接触的包裹,在正常的SQL查询中,当我输入时,它可以完美地工作。
select target.district_id, target.parcel_id ,query.parcel_id, sdo_geom.relate(target.geom, 'determine', query.geom, 0.05)Relationship
from Parking target, Parking query
where query.parcel_id = 68
and target.district_id = 1
and sdo_relate(target.geom, query.geom, 'mask=TOUCH') = 'TRUE';
这个例子返回了与68号包裹接触的5个不同包裹的5行。然而,当我在过程中执行时,要么会出现“太多行错误”,要么如果我尝试添加“And Rownum <2”,它可以正常工作,但不显示所有关系,即它只运行并显示每个包裹的一个关系。有什么办法可以改善这种情况吗?我一直在阅读网站上的其他帖子,并提到引用游标,但我不知道它们如何应用于此处。非常感谢。
procedure Payx (pID number )is
varDistrict Parking.District_id%type;
vID Parking.parcel_id%type;
vQED Parking.parcel_id%type;
varRel varchar2(20);
begin
select target.district_id, target.parcel_id,query.parcel_id, sdo_geom.relate(target.geom, 'determine', query.geom, 0.05)Relationship
into varDistrict
vID,
vQED,
varRel
from Parking target, Parking query
where query.parcel_id = pID
and sdo_relate(target.geom, query.geom, 'mask=TOUCH') = 'TRUE'
and rownum <2;
--- dbms_output.put_line('')
end Payx;