This example show you how to call a stored procedure that return a result set of the query execution result.
package org.kodejava.jdbc;
import java.math.BigDecimal;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
public class CallableStatementExample {
private static final String URL = "jdbc:mysql://localhost/kodejava";
private static final String USERNAME = "kodejava";
private static final String PASSWORD = "s3cr*t";
public static void main(String[] args) {
try (Connection connection =
DriverManager.getConnection(URL, USERNAME, PASSWORD)) {
// Prepares a call to the stored procedure. This stored procedure takes
// one IN parameter
String query = "call Get_Product_By_Price(?)";
CallableStatement cb = connection.prepareCall(query);
// Sets the input parameter
cb.setBigDecimal(1, new BigDecimal("50.39"));
// Execute the query
ResultSet rs = cb.executeQuery();
while (rs.next()) {
System.out.println("Product: " + rs.getString(1));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Here is the stored procedure script we use in the example above.
DELIMITER ;;
DROP PROCEDURE IF EXISTS Get_Product_By_Price;;
CREATE PROCEDURE Get_Product_By_Price(IN product_price DECIMAL(10, 2))
BEGIN
SELECT name FROM product WHERE price = product_price;
END;;
DELIMITER ;
Maven dependencies
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.4.0</version>
</dependency>
Latest posts by Wayan (see all)
- How do I get number of each day for a certain month in Java? - September 8, 2024
- How do I get operating system process information using ProcessHandle? - July 22, 2024
- How do I sum a BigDecimal property of a list of objects using Java Stream API? - July 22, 2024