中易网

怎样使用Java执行带输出参数的存储过程?

答案:2  悬赏:50  
解决时间 2021-02-16 06:29
首先请问比如我有一个存储过程有一个返回值,存储过程的字符串是不是应该写成"{?=call ×××(?)}",然后再执行前使用registerOutParameter方法注册一下,是不是第一个问号就是输出参数?可是我的总是报异常。
异常信息:The requested data is not available.
能不能给我写一个执行带输出参数存储过程的例子,不胜感激!
最佳答案
这个是一个执行游标的存储过程,返回一个游标结果集
前面的数据库连接我就不写了
String sql="{call course(?,?)}";
创建连接,
CallableStatement call=conn.prepareCall(sql);
设置in参数
call.setString(1,"dd");
注册参数类型
call.registerOutParameter(2,OracleTypes.CURSOR);
call.executeUpdate();
取得游标结果集
Object ob1=call.getObject(2);
循环遍历
ResultSet st=(ResultSet)ob1;
while(st.next()){
String s1=st.getString(1);
String s2=st.getString(2);
}
全部回答
1、创建带输出参数的存储过程 如: 在查询分析器中执行declare @mg nvarchar(100) exec proc_csco_salesfctbystore 100,200,'name',@mg output print @mg 在java中调用import java.sql.*; public class test{ public static void main(string args[]) throws exception {//加载驱动drivermanager.registerdriver(new sun.jdbc.odbc.jdbcodbcdriver()); //获得连接 connection conn = drivermanager.getconnection("jdbc:odbc:mydata", "sa",""); //创建存储过程的对象 callablestatement c = conn.preparecall("{call proc_csco_salesfctbystore(?,?,?,?)}"); //给存储过程的第一个参数设置值 c.setint(1, 100); //给存储过程的第一个参数设置值 c.setint(2, 10000); //给存储过程的第一个参数设置值 c.setstring(3, user); //注册存储过程的第四个参数 c.registeroutparameter(4, java.sql.types.varchar); //执行存储过程 c.execute(); //得到存储过程的输出参数值
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
在学校被欺负,羞辱的很惨,要不要告诉校长,
常见的霍尔元件有哪些种类和型号?
海峡两岸什么时候实现的三通
男人小便后仍然感觉小腹坠涨
二小削面这个地址在什么地方,我要处理点事
什么是PPc软件
三期士官第一年,要是年终考核不过会提前责令
请问有没有小孩情侣头像啊
住房公积金在什么情况下才能使用
怎样设置应用软件开机自启
开大床房用了一张身份证,可以住俩个人吗
舅,安徽省宿松县左坝人。被旧社会抓壮丁出去
多宝斋美术馆地址在哪,我要去那里办事
是什么决定了汽车的滤震功能?悬挂?避震塔?
我电脑里的百度浏览器怎么老是自己没有了呢两
推荐资讯
有没有优美好听点的钢琴伴奏音乐,也别太古老
转炉和电炉炼钢原材料各有哪些
为什么说好包邮,却还是算了邮费?
甲乙两人手中的钱数的和是最小的三位合数,钱
长阳驻宜招待所在什么地方啊,我要过去处理事
他很爱我,我也很喜欢他,可是我们在一起后我
怎么捐衣服给贫困山区的孩子?
为什么中国不把每件商品所含的税收标明,让老
想知道食物中是否有蛋白质维生素矿物质等营养
宜昌到武汉的k8086火车现在会晚点吗
我的tiinlabwt231耳机,被我洗啦,简单处理了
军训正步的时候我走的十分整齐动作到位但由于
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?