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

Hvordan kalder man PostgreSQL-procedure i Java?

Du kan stort set forenkle funktionen. (Beholder forenklet funktion af hensyn til spørgsmålet.)

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;

Men teknisk set ville det, du har i spørgsmålet, også fungere - forudsat at datatypen matcher. Gør det? Er kolonnen filedata.num af typen integer ? Det er det, jeg får ud af eksemplet. På dit andet spørgsmål Jeg antog numeric på grund af manglende information. Mindst én af dem vil mislykkes.

Hvis returtypen for funktionen ikke matcher den returnerede værdi, får du en fejl fra PostgreSQL-funktionen. Korrekt konfigureret vil din PostgreSQL-log have detaljerede fejlmeddelelser i dette tilfælde.

Hvad ser du, når du opretter ovenstående funktion i PostgreSQL og derefter kalder:

SELECT get_geom_difference(1);

fra psql . (Fortrinsvis i samme session for at udelukke en blanding af databaser, porte, servere eller brugere.)

At kalde en simpel funktion, der tager én parameter og returnerer én skalarværdi, virker ret ligetil. Kapitel 6.1 i PostgreSQL JDBC-manualen har et fuldstændigt eksempel, som synes at stemme helt overens med det, du har i dit spørgsmål (min ekspertise er dog med Postgres snarere end JDBC).



  1. At vælge både MIN og MAX fra tabellen er langsommere end forventet

  2. Kamp mod foo.bar (med et punktum/punkt)

  3. Mysql Foreach fra et bord til et andet del 2

  4. Sådan tilslutter du dig et bord i MySQL med et bord i Oracle