sql >> Databáze >  >> RDS >> PostgreSQL

Jak volat proceduru PostgreSQL v Javě?

Funkci můžete značně zjednodušit. (Zachování zjednodušující funkce kvůli otázce.)

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;

I když technicky by to, co máte v otázce, fungovalo také - za předpokladu, že se datový typ shoduje. To dělá? Je sloupec filedata.num typu integer ? To jsem pochopil z příkladu. K vaší další otázce Předpokládal jsemnumeric pro nedostatek informací. Alespoň jeden z nich selže.

Pokud návratový typ funkce neodpovídá vrácené hodnotě, dostanete chybu z funkce PostgreSQL. Správně nakonfigurovaný protokol PostgreSQL by v tomto případě měl podrobné chybové zprávy.

Co uvidíte, když vytvoříte výše uvedenou funkci v PostgreSQL a poté zavoláte:

SELECT get_geom_difference(1);

z psql . (Nejlépe ve stejné relaci, aby se vyloučila záměna databází, portů, serverů nebo uživatelů.)

Volání jednoduché funkce, která vezme jeden parametr a vrátí jednu skalární hodnotu, se zdá docela přímočaré. Kapitola 6.1 příručky PostgreSQL JDBC má úplný příklad, který, jak se zdá, dokonale souhlasí s tím, co máte ve své otázce (moje zkušenosti se však týkají spíše Postgres než JDBC).



  1. Export tabulky AWS Postgres RDS do AWS S3

  2. Jak získám aktuální rok pomocí SQL na Oracle?

  3. Je vygenerována tabulka Hibernate_sequence

  4. objednejte tím, že zabíráte příliš mnoho času v mysql