Mysql存储过程——多结果集返回与java获取
2011-11-18 13:10
656 查看
Mysql存储过程——多结果集返回与java获取
delimiter $$
CREATE PROCEDURE demoSp(IN inputParam VARCHAR(255), INOUTinOutParam
varchar(255))
BEGIN
SELECT CONCAT('zyxw---', inputParam)into inOutParam;
END $$
delimiter ;
java代码:
Connection conn = null;
CallableStatement st = null; //list
ResultSet rs = null;
try{
conn = DBManager.getConnection();
st = conn.prepareCall("{call demoSp(?,?)}");
st.setString(1, "aaaaaaaaaaaa");
st.registerOutParameter(2, Types.VARCHAR);
st.execute();
System.out.println(st.getString(2));
}catch (Exception e) {
throw new RuntimeException(e);
}finally{
DBManager.release(conn, st, rs);
}
//第二种情况
存储过程经常需要返回多个结果集。 Mysql 中直接用 select 即可返回结果集。而 oracle 则需要使用游标来返回结 果集。这一点 Mysql 相对比较方便,如下代码即可实现输出两个结果集:
CREATE PROCEDURE test_proc_multi_select()
BEGIN
select * from testproc;
select * from testproc where id=1;
END;
Java 代码
package com.hbsi.test;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import com.hbsi.utils.DBManager;
public class DemoMutilresult {
/**
* @param args
*/
publicstatic void main(String[] args) {
//TODO Auto-generated method stub
Connectioncon=null;
//用于执行sql存储过程的借口对象
CallableStatementst=null;
ResultSetrs=null;
try{
con=DBManager.getConnection();
//java中利用循环,即可获取结果际数据
Stringsql="{call test_mutil_proc()}";
st=con.prepareCall(sql);
//
booleanflag=st.execute();
inti=0;
while(flag){
System.out.println("第几个结果集"+(++i));
rs=st.getResultSet();
while(rs.next()){
System.out.println(rs.getInt(1));
}
flag=st.getMoreResults();
}
}catch (SQLException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}finally{
DBManager.release(con,st, rs);
}
}
}
delimiter $$
CREATE PROCEDURE demoSp(IN inputParam VARCHAR(255), INOUTinOutParam
varchar(255))
BEGIN
SELECT CONCAT('zyxw---', inputParam)into inOutParam;
END $$
delimiter ;
java代码:
Connection conn = null;
CallableStatement st = null; //list
ResultSet rs = null;
try{
conn = DBManager.getConnection();
st = conn.prepareCall("{call demoSp(?,?)}");
st.setString(1, "aaaaaaaaaaaa");
st.registerOutParameter(2, Types.VARCHAR);
st.execute();
System.out.println(st.getString(2));
}catch (Exception e) {
throw new RuntimeException(e);
}finally{
DBManager.release(conn, st, rs);
}
//第二种情况
存储过程经常需要返回多个结果集。 Mysql 中直接用 select 即可返回结果集。而 oracle 则需要使用游标来返回结 果集。这一点 Mysql 相对比较方便,如下代码即可实现输出两个结果集:
CREATE PROCEDURE test_proc_multi_select()
BEGIN
select * from testproc;
select * from testproc where id=1;
END;
Java 代码
package com.hbsi.test;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Types;
import com.hbsi.utils.DBManager;
public class DemoMutilresult {
/**
* @param args
*/
publicstatic void main(String[] args) {
//TODO Auto-generated method stub
Connectioncon=null;
//用于执行sql存储过程的借口对象
CallableStatementst=null;
ResultSetrs=null;
try{
con=DBManager.getConnection();
//java中利用循环,即可获取结果际数据
Stringsql="{call test_mutil_proc()}";
st=con.prepareCall(sql);
//
booleanflag=st.execute();
inti=0;
while(flag){
System.out.println("第几个结果集"+(++i));
rs=st.getResultSet();
while(rs.next()){
System.out.println(rs.getInt(1));
}
flag=st.getMoreResults();
}
}catch (SQLException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}finally{
DBManager.release(con,st, rs);
}
}
}
相关文章推荐
- Mysql存储过程——多结果集返回与java获取
- Mysql存储过程——多结果集返回与java获取
- java调用存储过程同时获取[返回参数]和[结果集]
- sql存储过程——多结果集返回与java获取
- mysql开发存储过程中,select结果集再动态的条件下select count(*)统计返回都为0问题解决
- php调用mysql存储过程返回结果集的处理
- 最完整的:JAVA调用ORACLE的存储过程、函数的返回结果集例子
- Java 调用 MySQL 存储过程并获得返回值
- OCCI调用带有返回结果集的存储过程,获取结果集中指定列的值
- Oracle存储过程中执行查询返回的结果集,并使用java代码调用【转】
- 最完整的:JAVA调用ORACLE的存储过程、函数的返回结果集例子
- Mysql 动态sql语句返回结果集-存储过程
- Mysql存储过程(二)——多结果集返回与java获取
- JAVA调用ORACLE的存储过程、函数的返回结果集例子
- Java调用存储过程二(返回一行或多行结果集)
- Java调用SQL Server存储过程同时返回参数和结果集
- MySQL 存储过程调用 返回结果集 实现分页
- C#获取一个即返回结果集,又返回值的存储过程
- Java调用SQL Server存储过程同时返回参数和结果集
- mysql调用存储过程无法返回结果集的问题