![]() |
Datenbank: oracle • Version: 9 • Zugriff über: egal
Unerklärliches verhalten einer Funktion
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:
So funktioniert es:
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; /
Code:
Kann mir jemand erklären warum?
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; / Gruß K-H |
AW: Unerklärliches verhalten einer Funktion
Ich würde sagen, es gibt keinen Eintrag Name.Name, der anders lautet als 'DUMMY_INV',
dafür aber Name.NameKey Werte, die anders als 3 sind. Einfach mal Gegenprobe im Select machen. Ggf. das Verhalten bei Vergleichen mit NULL berücksichtigen, "<>" als Operator ist da ungünstig. |
AW: Unerklärliches verhalten einer Funktion
Ich war da wohl etwas ungenau,
Es gibt jede Menge anderer Namen und auch anderer Keys, NULL ist in diesem Falle nicht relvant. Ich vermute, daß es ein "String"-Problem ist. Nur, in einer "normalen" Abfrage funktioniert es. Gruß K-H |
AW: Unerklärliches verhalten einer Funktion
Was soll das für "String" Problem sein?
Meinst Du vielleicht die String Theory? ;-) Versuch dich ranzurobben. - Sicherstellen, dass die Joins stimmen - Sicherstellen, dass die "vielen Werte" wirklich in der Joinkombi enthalten sind. - "normaler" SQL ist vermutlich aus SQLPLUS oder so gefeuert, hier differieren mglw die NLS Session Settings zur stored proc am Server - Stichprobe: Function so umschreiben, dass sie nur dein Kriterium zurückgibt, evtl 1) direkt, 2) durch select from dual eingekleidet - einfach mal impliziten Cursor probieren - in jedem Fall den expliziten Cursor in Deiner Proc auch schließen |
AW: Unerklärliches verhalten einer Funktion
Danke,
Da mach ich mich mal ran! Gruß K-H Edith: Seit ich den Cursor Close (brr watn Deutsch) tritt der Fehler nicht mehr auf. Vielen Dank! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz