PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come chiamare la procedura PostgreSQL in Java?

Puoi semplificare in gran parte la funzione. (Mantenendo la funzione semplicistica per il bene della domanda.)

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;

Tuttavia, tecnicamente, anche quello che hai nella domanda funzionerebbe, a condizione che il tipo di dati corrisponda. Lo fa? La colonna è filedata.num di tipo integer ? Questo è ciò che deduco dall'esempio. Su l'altra tua domanda Stavo assumendo numeric per mancanza di informazioni. Almeno uno di loro fallirà.

Se il tipo restituito della funzione non corrisponde al valore restituito, viene visualizzato un errore dalla funzione PostgreSQL. Se configurato correttamente, il tuo registro PostgreSQL avrebbe messaggi di errore dettagliati in questo caso.

Cosa vedi quando crei la funzione sopra in PostgreSQL e poi chiami:

SELECT get_geom_difference(1);

da psql . (Preferibilmente nella stessa sessione per escludere un miscuglio di database, porte, server o utenti.)

Chiamare una semplice funzione che prende un parametro e restituisce un valore scalare sembra piuttosto semplice. Capitolo 6.1 del manuale PostgreSQL JDBC ha un esempio completo che sembra concordare perfettamente con ciò che hai nella tua domanda (la mia esperienza è con Postgres piuttosto che con JDBC, però).