sql >> Database >  >> RDS >> PostgreSQL

Hoe de PostgreSQL-procedure in Java aan te roepen?

U kunt de functie grotendeels vereenvoudigen. (De simplistische functie behouden omwille van de vraag.)

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;

Hoewel, technisch gezien, zou wat je in de vraag hebt ook werken - op voorwaarde dat het gegevenstype overeenkomt. Doet het? Is de kolom filedata.num van het type integer ? Dat haal ik uit het voorbeeld. Op je andere vraag Ik ging ervan uit numeric wegens gebrek aan informatie. Minstens één van hen zal falen.

Als het retourtype van de functie niet overeenkomt met de geretourneerde waarde, krijgt u een foutmelding van de PostgreSQL-functie. Als uw PostgreSQL-logboek correct is geconfigureerd, bevat dit in dit geval gedetailleerde foutmeldingen.

Wat zie je als je de bovenstaande functie in PostgreSQL maakt en vervolgens aanroept:

SELECT get_geom_difference(1);

van psql . (Bij voorkeur in dezelfde sessie om verwisseling van databases, poorten, servers of gebruikers uit te sluiten.)

Het aanroepen van een eenvoudige functie met één parameter en het retourneren van één scalaire waarde lijkt vrij eenvoudig. Hoofdstuk 6.1 van de PostgreSQL JDBC-handleiding heeft een volledig voorbeeld dat perfect lijkt overeen te komen met wat u in uw vraag heeft (mijn expertise ligt echter bij Postgres in plaats van JDBC).



  1. Complex 'hiaten en eilanden'-probleem

  2. Waarom retourneert CONNECT BY LEVEL op een tafel extra rijen?

  3. update een mySQL-tabel met C#

  4. PostgreSQL:alleen-lezen tabel