PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да извикам PostgreSQL процедура в Java?

Можете значително да опростите функцията. (Запазване на опростена функция в името на въпроса.)

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;

Въпреки че, технически, това, което имате във въпроса, също ще работи - при условие, че типът данни съвпада. Наистина ли? Е колоната filedata.num от тип integer ? Това разбирам от примера. На другия ви въпрос Предполагах numeric поради липса на информация. Поне един от тях ще се провали.

Ако върнатият тип на функцията не съвпада с върнатата стойност, получавате грешка от функцията PostgreSQL. Правилно конфигуриран, вашият журнал на PostgreSQL ще има подробни съобщения за грешка в този случай.

Какво виждате, когато създадете горната функция в PostgreSQL и след това извикате:

SELECT get_geom_difference(1);

от psql . (За предпочитане в една и съща сесия, за да се изключи смесване на бази данни, портове, сървъри или потребители.)

Извикването на проста функция, приемаща един параметър и връщаща една скаларна стойност, изглежда доста лесно. Глава 6.1 от ръководството за PostgreSQL JDBC има пълен пример, който изглежда напълно съвпада с това, което имате във вашия въпрос (опитът ми обаче е по-скоро с Postgres, отколкото с 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. Как да запазите данните да не се сортират?

  2. Как избирате период от време в postgres?

  3. Как мога да проверя в Postgresql, че JSON е валиден?

  4. Посочете списък с дефиниции на колони dblink от локален съществуващ тип

  5. Как мога да импортирам JSON файл в PostgreSQL?