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!