Einzelnen Beitrag anzeigen

Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#1

Unerklärliches verhalten einer Funktion

  Alt 10. Feb 2011, 11:18
Datenbank: oracle • Version: 9 • Zugriff über: egal
Hallo zusammen,

ich habe eine funktion, die mehrere Personen, die zu einer Akte gehören in einem String ausgeben soll.
Nun existiert eine "Dummy"-Person die dort nicht auftauchen soll.
Wenn ich es so mache kommt ein Leer-String zurück:
Code:
create or replace function GET_INVLIST(inCasekey NUMBER) return VARCHAR as
  CURSOR c_cur is select Name.name,Nameindividual.Firstname
from casename, name, NameIndividual
where Casename.Namekey=Name.Namekey
  and Casename.Nametypekey=209
  and Casename.Casekey=inCaseKey
  and NameIndividual.Namekey=Name.Namekey
  and Name.Name<>'DUMMY_INV'
;  
  tsatz c_cur%ROWTYPE;
  satz varchar(2048);
begin
  satz:='';
  for tsatz in c_cur
  loop
     Exit when c_cur%NOTFOUND;
     satz:=satz||tsatz.Name||', '||tsatz.Firstname||'; ';
  end loop;
  RETURN(trim(trailing ';' from trim(satz)));
end;
/
So funktioniert es:
Code:
create or replace function GET_INVLIST(inCasekey NUMBER) return VARCHAR as
  CURSOR c_cur is select Name.name,Nameindividual.Firstname
from casename, name, NameIndividual
where Casename.Namekey=Name.Namekey
  and Casename.Nametypekey=209
  and Casename.Casekey=inCaseKey
  and NameIndividual.Namekey=Name.Namekey
  and Name.NameKey<>3
;  
  tsatz c_cur%ROWTYPE;
  satz varchar(2048);
begin
  satz:='';
  for tsatz in c_cur
  loop
     Exit when c_cur%NOTFOUND;
     satz:=satz||tsatz.Name||', '||tsatz.Firstname||'; ';
  end loop;
  RETURN(trim(trailing ';' from trim(satz)));
end;
/
Kann mir jemand erklären warum?
Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat