Mehrere Zeilen zurückgeben von Verfahren , select-Anweisung in PL/SQL

Dies ist die Verfahren Abschnitt von einen anonymen block, aus dem es nimmt die parameter pID, parcel_id. Mein problem ist das select-Anweisung gemeint ist, zu finden und anzuzeigen alle Pakete, berühren Sie das query-Paket und es funktioniert hervorragend in einer normalen SQL-Abfrage, wenn ich in,

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';

Dass Beispiel gibt fünf Reihen mit 5 verschiedenen Paketen, berühren Sie das Paket 68. Allerdings, wenn ich es in die Prozedur, die ich entweder bekommen die "ZU Viele Zeilen, Fehler" oder, wenn ich versuche, um 'Und Rownum <2' es funktioniert okay, aber nicht alle zeigen die Beziehungen, d.h. es läuft durch und zeigt nur eine Beziehung für jedes Paket. Gibt es irgendetwas, was ich tun könnte um dies zu verbessern? Ich habe Lesen der anderen Beiträge auf der Website und es gibt Hinweise auf Referenz-Cursor, aber ich weiß nicht, wie diese anzuwenden sind. Vielen Dank.

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;
InformationsquelleAutor Delta1x | 2017-03-26
Schreibe einen Kommentar