Considerando o seguinte o script de criação da storedProcedure, podemos observar a nomenclatura e parâmetros descritos.

CREATE OR REPLACE FUNCTION somar(
    IN primeiro double precision,
    IN segundo double precision,
    OUT soma double precision)
  RETURNS double precision AS
$BODY$
BEGIN
    soma = primeiro + segundo;
END;
$BODY$
  LANGUAGE plpgsql

Para executarmos essa storedProcedure no código Java, precisamos declarar o nome e os parâmetros declarados na storeProcedure.

    StoredProcedureQuery storedProcedure = em.createStoredProcedureQuery(
        "somar"
    );
    storedProcedure.registerStoredProcedureParameter(
        "primeiro",Double.class,ParameterMode.IN
    );
    storedProcedure.registerStoredProcedureParameter(
        "segundo",Double.class,ParameterMode.IN
    );
    storedProcedure.registerStoredProcedureParameter(
        "resposta",Double.class,ParameterMode.OUT
    );
    storedProcedure.setParameter("primeiro",3.6);
    storedProcedure.setParameter("segundo",6.9);
    storedProcedure.execute();
    Double resposta = (Double) storedProcedure.getOutputParameterValue(
        "resposta"
    );
    System.out.println("A soma foi: " + resposta);

Podemos, também, criar uma storedProcedure nomeada com a anotação @NamedStoredProcedureQuery.

@NamedStoredProcedureQuery(name="Procedure.somar", procedureName="somar",
    parameters = {
        @StoredProcedureParameter(name="primeiro", mode=ParameterMode.IN, type=Double.class),
        @StoredProcedureParameter(name="segundo", mode=ParameterMode.IN, type=Double.class),
        @StoredProcedureParameter(name="soma", mode=ParameterMode.OUT, type=Double.class)
    }
)

results matching ""

    No results matching ""