Werja ORACLE:
Oracle9i Release 9.2.0.8.0 - Production
PL/SQL Release 9.2.0.8.0 - Production
Sprawdzane poprzez: SQL Developer
TabelaA (
...
wartosc number(10,0),
kod VARCHAR2(6 CHAR)
);
TabelaB (
...
a_kod VARCHAR2(6 BYTE)
);
FUNCTION fun(kod varchar2) RETURN number
IS
wynik number(10,0) := 0;
BEGIN
select a.wartosc into wynik
from TabelaB b
join TabelaA on a.kod = b.a_kod
where b.a_kod = kod;
dbms_output.put_line('f-> ' || wynik);
return wynik;
END;
select a.wartosc
from TabelaB b
join TabelaA on a.kod = b.a_kod
where b.a_kod = kod;
Jeżeli użyję zapytania poza obrębem funkcji zwracana jest wartość 5 (jest to prawidłowy wynik), a po wywołaniu funkcji zwracany jest wynik: 6
Jedynie pola tabel nie są wszystkie podane, bo to nie istotne. Funkcja i wywołania tak jak jest to w bazie.
declare
wynik number(10,0);
begin
wynik := fun('923154');
dbms_output.put_line(wynik);
end;
Czy ktoś wie w czym jest problem?