mysql procedure 没有return参数 可以out一个变量给客户端 但是out参数又不支持游标类型,如何能out出一个结果集呢?
方法很简单 就是在procedure里执行一个select (select .... from ...)
eg.
CREATE PROCEDURE `CREATE_ACCOUNT`( ACCOUNT CHAR(32), PASSWORD CHAR(32), OUT I_RETURN_CODE INT ) BEGIN UPDATE ACCOUNT SET Flag = 0 WHERE Account = S_ACCOUNT; SET I_RETURN_CODE = 1; SELECT Flag FROM ACCOUNT WHERE Account = S_ACCOUNT; END;
这样,在客户端程序调用的直接获取结果集就ok了,附一段java代码
Connection conn = null; CallableStatement ps = null; String url = "jdbc:mysql://192.168.1.13:3306/adb"; String user = "user", pass = "password"; try{ Class.forName("com.mysql.jdbc.Driver"); System.out.println("regedit driver seccess!"); System.out.println("now,getting a connection .... ..."); conn = DriverManager.getConnection(url, user, pass); System.out.println("getting connection seccess!"); ps = conn.prepareCall("{call CREATE_ACCOUNT(?,?,?)}"); ps.setString(1,"24ADB4E2F0"); ps.setString(2,"apassword"); e ps.registerOutParameter(3, Types.INTEGER); //ret code System.out.println("binding parameters seccess!"); ps.execute(); System.out.println("execute procedure seccess!"); int ret = ps.getInt(3); ResultSet rs = ps.getResultSet(); // the result set that procedure return if(rs != null) { while(rs.next()) { System.out.println(rs.getInt(1)); } } conn.close(); System.out.println("closing this connection seccess!"); } catch(Exception e) { System.out.println("Exception: "+e); }