English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Detailed explanation of Java calling Oracle stored procedures

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!

You May Also Like