Możesz w dużym stopniu uprościć tę funkcję. (Zachowanie uproszczonej funkcji ze względu na pytanie.)
CREATE OR REPLACE FUNCTION get_geom_difference()
RETURNS integer AS
$BODY$
SELECT num
FROM filedata
WHERE num = 1
LIMIT 1; -- needed if there can be more than one rows with num = 1
$BODY$ LANGUAGE SQL;
Chociaż technicznie to, co masz w pytaniu, również działałoby - pod warunkiem, że typy danych są zgodne. Czy to? Czy kolumna jest filedata.num
typu integer
? To właśnie wywnioskowałem z przykładu. Na Twoje inne pytanie
Zakładałem, że numeric
z powodu braku informacji. Co najmniej jeden z nich nie powiedzie się.
Jeśli zwracany typ funkcji nie pasuje do zwracanej wartości, otrzymasz błąd funkcji PostgreSQL. Prawidłowo skonfigurowany dziennik PostgreSQL będzie w tym przypadku zawierał szczegółowe komunikaty o błędach.
Co widzisz, gdy tworzysz powyższą funkcję w PostgreSQL, a następnie wywołujesz:
SELECT get_geom_difference(1);
z psql . (Najlepiej w tej samej sesji, aby wykluczyć pomieszanie baz danych, portów, serwerów lub użytkowników).
Wywołanie prostej funkcji pobierającej jeden parametr i zwracającej jedną wartość skalarną wydaje się całkiem proste. Rozdział 6.1 podręcznika PostgreSQL JDBC ma pełny przykład, który wydaje się doskonale zgadzać z tym, co masz w swoim pytaniu (jednak moja wiedza dotyczy Postgresa, a nie JDBC).