Manglende returværdi fra funktion?
Jeg har nedenstående funktion som senere skal indgå i en select sætning:
function doSomething (pnkeyfield in number) return number is
cursor c_resultset(keyfield number) is
select SomeNumber
from SomeTable
where ID = keyfield;
loc_number SomeTable.SomeNumber%TYPE;
begin
open c_resultset (pnkeyfield);
fetch c_resultset
into loc_number;
close c_resultset;
return loc_number;
end;
Nuvel jeg forsøger herefter at lave min select sætning
select SomeAttribut
, doSomeThing (ATable.keyfield) \"Functionsvalue\"
from ATable
Problemet er at der ganske enkelt ikke kommer nogen værdi i kolonnen der skal indholde funktionsværdien. Sætter jeg derimod en konstantværdi ind i doSomeThing funktionens return statement, ja så får jeg altså en returværdi!
Blot for en god ordens skyld:
1) Ovenstående funktion er placeret i en package, men der burde i realiteten ikke betyde noget og min forespørgsel bliver som sagt udført.
2) Jeg har overvejet om der overhovedet er en returværdi i ovenstående cursor og jeg har derfor udført den select sætning der er i omtalte cursor. Jeg får en returværdi når jeg udfører selve select sætningen.
3) jeg har prøvet at definere en exception blok, men der optræder ingen exception overhovedet?!
4) Jeg har undersøgt om jeg faktisk får præcist en række tilbage vha. c_resultset%ROWCOUNT = <et eller andet tal>. Jeg får præcist en række tilbage.
Jeg er ganske enkelt løbet tør for ideer. Er der nogle som har et bud på årsagen?