jdbc 如何调用 sql server 的带输出cursor参数的存储过程?

baoqingfeng 2004-12-27 09:48:11
CallableStatement call =
m_conn.prepareCall("{? = call VipLogin(?,?,?,?,?,?,?,?)}",
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
call.registerOutParameter(1, Types.NUMERIC);

BigDecimal nPosID = new BigDecimal(szPosID);
BigDecimal nOperID = new BigDecimal(szOperID);
BigDecimal nOperPwd = new BigDecimal(szOperPwd);
BigDecimal nCardPwd = new BigDecimal(szCardPwd);


call.setBigDecimal(2, nPosID);
call.setBigDecimal(3, nOperID);
call.setBigDecimal(4, nOperPwd);
call.setString(5, szCardID);
call.setBigDecimal(6, nCardPwd);


call.registerOutParameter(7, Types.REF);
call.registerOutParameter(8, Types.INTEGER);
call.registerOutParameter(9, Types.DATE);
call.execute();


存储过程如下:
CREATE PROCEDURE VipCenter_VipLogin
@szPosID VARCHAR(21),
@szOperID VARCHAR(21),
@szOperPwd VARCHAR(21),
@szCardID VARCHAR(21),
@szCardPwd VARCHAR(21),
@retResultSet CURSOR VARYING output,--返回交易结果集
@nCardType int output,--返回卡类型
@stopDate datetime output--返回卡的到期时间
在执行到call.registerOutParameter(7, Types.REF);时就提示:
[Microsoft][SQLServer 2000 Driver for JDBC]The specified SQL type is not supported by this driver.
难道jdbc不支持sql server 的cursor,那我如何才能在sql server实现cursor output呢????
...全文
213 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
baoqingfeng 2004-12-27
  • 打赏
  • 举报
回复
我以前用oracle,可以使用OracleTypes.CURSOR实现的。sql server 是否有其它的包,而不用JDBC的Types.REF。我把msbase.jar,mssqlserver.jar,msutil.jar还下载了jtds-0.9.1,解压出来都没有看到有类似的包。大家可否有好的建议?
yingqing 2004-12-27
  • 打赏
  • 举报
回复
不支持
funsuzhou 2004-12-27
  • 打赏
  • 举报
回复
学习。顶
zjcxc 元老 2004-12-27
  • 打赏
  • 举报
回复
1.看你的处理需求是否能改为不用游标的方式

2.尝试各种不同的游标类型,看看是否游标类型导致的
baoqingfeng 2004-12-27
  • 打赏
  • 举报
回复
有其他办法实现吗?
zjcxc 元老 2004-12-27
  • 打赏
  • 举报
回复
如果你在查询分析器中能正常调用,说明应该是jdbc不支持
zjcxc 元老 2004-12-27
  • 打赏
  • 举报
回复
前段时间记得有人说过jdbc不支持,不知道是否真的不支持

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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