PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak wywołać procedurę PostgreSQL w Javie?

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).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ODBC v Libpq:biblioteka C dla PostgreSQL

  2. Polecenie Postgresql COPY dające błąd odmowy uprawnień

  3. Jak określić „początek dnia dzisiejszego” w określonej strefie czasowej?

  4. Zaawansowane dopasowywanie partycji do łączenia partycji

  5. Skonfiguruj PHP i PostgreSQL w systemie Windows