PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment appeler la procédure PostgreSQL en Java ?

Vous pouvez grandement simplifier la fonction. (Garder la fonction simpliste pour le plaisir de la question.)

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;

Bien que, techniquement, ce que vous avez dans la question fonctionnerait aussi - à condition que le type de données corresponde. Est-ce le cas ? Est-ce que la colonne filedata.num de type integer ? C'est ce que je comprends de l'exemple. Sur votre autre question Je supposais numeric par manque d'informations. Au moins l'un d'entre eux échouera.

Si le type de retour de la fonction ne correspond pas à la valeur renvoyée, vous obtenez une erreur de la fonction PostgreSQL. Correctement configuré, votre journal PostgreSQL aurait des messages d'erreur détaillés dans ce cas.

Que voyez-vous lorsque vous créez la fonction ci-dessus dans PostgreSQL, puis appelez :

SELECT get_geom_difference(1);

de psql . (De préférence dans la même session pour exclure une confusion de bases de données, de ports, de serveurs ou d'utilisateurs.)

Appeler une fonction simple prenant un paramètre et renvoyant une valeur scalaire semble assez simple. Chapitre 6.1 du manuel PostgreSQL JDBC a un exemple complet qui semble parfaitement correspondre à ce que vous avez dans votre question (mon expertise est avec Postgres plutôt que JDBC, cependant).