JDBC呼叫儲存過程(以MySQL為例)
阿新 • • 發佈:2018-11-30
-- drop procedure test_proc;
DELIMITER //
CREATE PROCEDURE test_proc(out p_out int, inout p_inout int, in p_in int)
BEGIN
set p_out=200000002;
set p_inout=1000;
set p_in=200;
END;
//
DELIMITER ;
import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Types; public class JdbcProcedureTest { public static void main(String[] args) throws ClassNotFoundException, SQLException { String driver = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://127.0.0.1:3306/ump?useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=TRUE"; String user = "root"; String password = "123456"; Class.forName(driver); Connection conn = DriverManager.getConnection(url, user, password); String sql = "{call test_proc(?,?,?)}"; CallableStatement stmt = conn.prepareCall(sql); stmt.setObject(2, "2"); stmt.setObject(3, "3"); stmt.registerOutParameter(1, Types.VARCHAR); stmt.registerOutParameter(2, Types.VARCHAR); stmt.execute(); String s1 = stmt.getString(1); String s2 = stmt.getString(2); System.out.println("s1=" + s1 + ", s2=" + s2); } }
輸出結果:
s1=200000002, s2=1000