PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como chamar o procedimento PostgreSQL em Java?


Você pode simplificar amplamente a função. (Mantendo a função simplista por causa da questão.)
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;

Embora, tecnicamente, o que você tem na pergunta também funcione - desde que o tipo de dados corresponda. Será? É a coluna filedata.num do tipo integer ? É o que deduzo do exemplo. Em sua outra pergunta Eu estava assumindonumeric por falta de informação. Pelo menos um deles irá falhar.

Se o tipo de retorno da função não corresponder ao valor retornado, você receberá um erro da função PostgreSQL. Devidamente configurado, seu log do PostgreSQL teria mensagens de erro detalhadas neste caso.

O que você vê, quando você cria a função acima no PostgreSQL e então chama:
SELECT get_geom_difference(1);

de psql . (De preferência na mesma sessão para descartar uma confusão de bancos de dados, portas, servidores ou usuários.)

Chamar uma função simples pegando um parâmetro e retornando um valor escalar parece bem direto. Capítulo 6.1 do manual PostgreSQL JDBC tem um exemplo completo que parece concordar perfeitamente com o que você tem em sua pergunta (minha experiência é com Postgres em vez de JDBC).