簡體   English   中英

Java可以批量調用SQL存儲過程嗎?

[英]Can Java batch calls to SQL stored procedures?

Java:使用PreparedStatement向MySQL中插入多行涉及將多個INSERT批處理成一個操作。 我想知道是否可以對存儲過程進行調用,特別是對MySQL? 如果是這樣,將使用什么語句類?

您可以使用executeBatch() 看這個例子

注意:我尚未通過在本地運行的示例來驗證示例,但根據文檔,它應該可以工作。

如果您有這樣的存儲過程:

JDBC CallableStatement Stored procedure IN parameter example.
CREATE OR REPLACE PROCEDURE insertEMPLOYEE(
   e_id IN EMPLOYEE.EMPLOYEE_ID%TYPE,
   e_name IN EMPLOYEE.NAME%TYPE,
   e_salary IN EMPLOYEE.SALARY%TYPE)
IS
BEGIN

  INSERT INTO EMPLOYEE ("EMPLOYEE_ID", "NAME", "SALARY") 
  VALUES (e_id, e_name, e_salary);

  COMMIT;

END;

您可以只使用executeBatch()來完成預期的工作。 例:

Connection conn = null;
CallableStatement callableStatement = null;
String proc = "{call insertEMPLOYEE(?,?,?)}";
try{            
    //get connection
    conn = JDBCUtil.getConnection();

    //create callableStatement
    callableStatement = conn.prepareCall(proc);

    callableStatement.setInt(1, 7);
    callableStatement.setString(2, "Harish Yadav");
    callableStatement.setInt(3, 50000);
    callableStatement.addBatch();

    callableStatement.setInt(1, 8);
    callableStatement.setString(2, "Abhishek Rathor");
    callableStatement.setInt(3, 50000);
    callableStatement.addBatch();

    //execute query
    callableStatement.executeBatch();

    //close connection
    callableStatement.close();
    conn.close();

     System.out.println("Records inserted successfully.");
}catch(Exception e){
    e.printStackTrace();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM