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

...全文
365 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianfang 2017-12-29
  • 打赏
  • 举报
回复
数据库客户端调用有结果吗
向上的芽儿 2017-12-29
  • 打赏
  • 举报
回复
引用 2 楼 tianfang 的回复:
数据库客户端调用有结果吗
有的,存储过程内容每问题,我写的测试最简单的写法
向上的芽儿 2017-12-28
  • 打赏
  • 举报
回复
upupup 顶起来

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧