Java JDBC CallableStateMent调用存储过程
向上的芽儿 2017-12-28 10:27:51 我现在遇到一个问题, java 去调用存储过程的时候, 如果 存储过程 代码里面写的是增、删、查、改,最终有select 语句的话,java 是可以取得结果集的
但是,如果在proc 代码里写了 DDL 语句比如 Create table drop table 后面的select 查询结果 java 就取不到了。
JDBC 调用存储过程:CallableStatement call = conn.prepareCall(“{call proc(?,?,?)}”);
conn = ...//获取sql server db 的连接
CallableStatement call = conn.prepareCall("{call proc(?,?,?)}");
//这里是设置参数,具体的是传递对象,总之最终效果是call.setInt..setString...
//统一用setObject设置入参
for (ProcPar p : ParameterList) {
if (p.getIsOutput()) {
call.registerOutParameter(p.getParName(), p.getDataType());
} else {
call.setObject(p.getParName(), p.getParValue());
}
}
call.execute();
while(call.getMoreResults()){//遍历取值
rs = call.getResultSet();
while(rs.next()){
System.out.println(rs.getString(1));
}
}
存储过程代码:
ALTER PROCEDURE test_xj
@pagesize int,
@pageindex int,
@result varchar(200) output
AS
BEGIN
update aaA set isBit=1,create_date=GETDATE()
select * from Sys_FPage where Pid=901001
--ddl 语句如果释放注释就取不到结果集了
--create table #a(id int)
--drop table #a
select top 10 * into #b from Sys_FPage
select * from #b
set @result='OK'
END
GO