sql >> Databasteknik >  >> RDS >> Oracle

Kalla pl/sql-funktion i java?

Java tillhandahåller CallableStatements för sådana ändamål .

CallableStatement cstmt = conn.prepareCall("{? = CALL total_cancellations()}");
cstmt.registerOutParameter(1, Types.INTEGER);
cstmt.setInt(2, acctNo);
cstmt.executeUpdate();
int cancel= cstmt.getInt(1);
System.out.print("Cancellation is "+cancel);

kommer att skriva ut samma som du gör i pl/sql. Enligt dokument Connection#prepareCall() ,

Skapar ett CallableStatement-objekt för att anropa databaslagrade procedurer. CallableStatement-objektet tillhandahåller metoder för att ställa in dess IN- och OUT-parametrar, och metoder för att utföra anropet till en lagrad procedur.

Du kan även skicka parametrar för funktionen. till exempel

conn.prepareCall("{? = CALL total_cancellations(?)}");
cstmt.setInt(2, value);

kommer att skicka värdena till funktionen som indataparameter.

Hoppas detta hjälper!



  1. Förstå MapReduce-typer och -format

  2. APPLSYSPUB-schema

  3. MySQL select-sats med CASE eller IF ELSEIF? Inte säker på hur man får resultatet

  4. Fel vid anslutning till postgresql med sqlalchemy