sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur man anropar PostgreSQL-proceduren i Java?

Du kan till stor del förenkla funktionen. (Behåller förenklad funktion för frågans skull.)

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;

Fast tekniskt sett skulle det du har i frågan också fungera - förutsatt att datatypen matchar. Gör det? Är kolumnen filedata.num av typen integer ? Det är vad jag får ut av exemplet. På din andra fråga Jag antog numeric i brist på information. Minst en av dem kommer att misslyckas.

Om returtypen för funktionen inte matchar det returnerade värdet får du ett felmeddelande från PostgreSQL-funktionen. Rätt konfigurerad skulle din PostgreSQL-logg ha detaljerade felmeddelanden i det här fallet.

Vad ser du när du skapar ovanstående funktion i PostgreSQL och sedan anropar:

SELECT get_geom_difference(1);

från psql . (Gärna i samma session för att utesluta en sammanblandning av databaser, portar, servrar eller användare.)

Att anropa en enkel funktion som tar en parameter och returnerar ett skalärt värde verkar ganska enkelt. Kapitel 6.1 i PostgreSQL JDBC-manualen har ett fullständigt exempel som verkar överensstämma helt med det du har i din fråga (min expertis är dock med Postgres snarare än JDBC).



  1. Hur man får värden för bindningsparametrar från Oracle JDBC PreparedStatement-objekt

  2. Postgresql infoga trigger för att ställa in värde

  3. SQLite FULL OUTER JOIN-emulering

  4. Visa storlekskolumnen som rad för varje färgprodukt i relaterad tabell?