JDBC调用存储过程(以MySQL为例)

-- 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

猜你喜欢

转载自blog.csdn.net/look4liming/article/details/83543623
今日推荐