English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Detailed explanation of Java calling Oracle stored procedures
Steps:
1、Writing an Oracle stored procedure
2、Writing a database connection utility class
3、Writing a simple application to call the stored procedure
Implementation:
1、Oracle storage procedure:
/*Test table*/ create table test( id varchar2(32), name varchar2(32) ); /*Storage procedure to insert data*/ CREATE OR REPLACE PROCEDURE insert_procedure( PARA1 IN VARCHAR2, PARA2 IN VARCHAR2 ) AS BEGIN INSERT INTO test (id, name) VALUES (PARA)1, PARA2); END insert_procedure; /*Stored procedure returns a result set*/ CREATE OR REPLACE PROCEDURE select_procedure( para_id IN VARCHAR2, name OUT sys_refcursor /* This sys_refcursor type is in the SYS.STANDARD package */ ) AS BEGIN OPEN name FOR SELECT * FROM test WHERE id = para_id; END;
2JDBC utility class
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class DBUtil { public static final String DRIVER = "oracle.jdbc.driver.OracleDriver"; public static final String URL = "jdbc:oracle:thin:@localhost:1521/orcl"; public static final String USERNAME = "pfm"; public static final String PASSWORD = "pfm"; /** * Register the database driver through the static code block */ static { try { Class.forName(DRIVER); } catch (ClassNotFoundException e) { e.printStackTrace(); } } /** * Obtain Connection * * @return */ public static Connection getConnection() { Connection conn = null; try { conn = DriverManager.getConnection(URL, USERNAME, PASSWORD); } e.printStackTrace(); } return conn; } /** * Obtain Statement * * @return */ public static Statement getStatement() { Statement st = null; try { st = getConnection().createStatement(); } e.printStackTrace(); } return st; } /** * Close ResultSet * * @param rs */ public static void closeResultSet(ResultSet rs) { if (rs != null) { try { rs.close(); } e.printStackTrace(); } } } /** * Close Statement * * @param st */ public static void closeStatement(Statement st) { if (st != null) { try { st.close(); } e.printStackTrace(); } } } /** * Close Connection * * @param conn */ public static void closeConnection(Connection conn) { if (conn != null) { try { conn.close(); } e.printStackTrace(); } } } /** * Close all * * @param rs * @param sta * @param conn */ public static void closeAll(ResultSet rs, Statement sta, Connection conn) { closeResultSet(rs); closeStatement(sta); closeConnection(conn); } }
3Call the stored procedure:
import java.sql.CallableStatement; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import oracle.jdbc.driver.OracleTypes; /** * Test the call to the stored procedure * */ public class StoredTest { public static void main(String[] args) { insert_call(); //select_call(); } /** * Execute the stored procedure to insert data */ public static void insert_call() { Connection conn = DBUtil.getConnection(); PreparedStatement pst = null; CallableStatement proc = null; // Create an object for the execution of the stored procedure try { proc = conn.prepareCall("{ call insert_procedure("63;,?); }); proc.setString(1, "1); // Set the first input parameter proc.setString(2, "hello call"); // Set the first input parameter proc.execute();// Execute } e.printStackTrace(); } try { // Close IO stream proc.close(); DBUtil.closeAll(null, pst, conn); } e.printStackTrace(); } } } /** * Execute stored procedure to query data */ public static void select_call() { Connection conn = DBUtil.getConnection(); CallableStatement stmt; try { stmt = conn.prepareCall("{ call select_procedure(?, ?); }); // This method cannot implement multi-line syntax stmt.setString(1, "1); stmt.registerOutParameter(2, OracleTypes.CURSOR); stmt.execute(); ResultSet rs = (ResultSet) stmt.getObject(2); while (rs.next()) { System.out.println(rs.getString("name")); } } e.printStackTrace(); } DBUtil.closeConnection(conn); } } }
Thank you for reading, I hope it can help everyone. Thank you for your support of this site!