问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Java连接Oracle调用存储过程提示实际返回的行数超出请求的行数异常,怎么解决

发布网友 发布时间:2022-04-08 17:42

我来回答

2个回答

热心网友 时间:2022-04-08 19:12

package com.yc.ycportal.ge.util;import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;import com.mysql.jdbc.ResultSet;public class TestOracle { private Connection conn=null;
private CallableStatement call=null;
private ResultSet rs=null; public TestOracle() {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
setConn();
}
catch (ClassNotFoundException ex) {
}
} public void setConn(){
String url="jdbc:oracle:thin:@localhost:1521:hy";
try {
conn = DriverManager.getConnection(url, "system", "manager");
System.out.println("conn ok");
}
catch (SQLException ex) {
}
} public void closeConn(){
if(conn!=null){
try {
conn.close();
System.out.println("conn close");
}
catch (SQLException ex) {
}
}
} //调用单独的具有输出参数的过程
public void testShuchu(int salary ){
//实例化cal
try {
//cal = conn.prepareCall("{call hr.shuchu(?,?)}");
call=conn.prepareCall("begin hr.shuchu(?,?); end;");
call.setInt(1,salary);
//注册输出参数
//cal.registerOutParameter(2,java.sql.Types.VARCHAR);
call.registerOutParameter(2,oracle.jdbc.OracleTypes.VARCHAR);
call.execute();
//获得输出参数
// String str=cal.getString(2);
String str=(String)call.getObject(2);
System.out.println(str);
}
catch (SQLException ex) {
}
finally{
try {
call.close();
}
catch (SQLException ex1) {
}
} }// 调用函数
public void testHanshu(int num1,int num2){
try {
call = conn.prepareCall("begin ?:=hr.mypack.myfunc(?,?); end;");
call.setInt(2,num1);
call.setInt(3,num2);
call.registerOutParameter(1,oracle.jdbc.OracleTypes.NUMBER);
call.execute();
int num = call.getInt(1);
System.out.println(num);
}
catch (SQLException ex) {
}
finally{
try {
call.close();
}
catch (SQLException ex1) {
}
} }// 调用游标
public void testRs(int salary){
try {
call = conn.prepareCall("begin hr.mypack.shuchu(?,?); end;");
call.setInt(1,salary);
call.registerOutParameter(2,oracle.jdbc.OracleTypes.CURSOR);
call.execute();
rs=(ResultSet)call.getObject(2); if(rs!=null){
while (rs.next()) {
System.out.println(rs.getString(2));
}
}
else{
System.out.println("查无结果");
}
}
catch (SQLException ex) {
}
finally{
try {
rs.close();
call.close();
}
catch (SQLException ex1) {
} }
}
public static void main(String[] args) {
TestOracle dbUtil1 = new TestOracle();
dbUtil1.testRs(420);
}}package com.yc.ycportal.ge.util;import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;import com.mysql.jdbc.ResultSet;public class TestOracle { private Connection conn=null;
private CallableStatement call=null;
private ResultSet rs=null; public TestOracle() {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
setConn();
}
catch (ClassNotFoundException ex) {
}
} public void setConn(){
String url="jdbc:oracle:thin:@localhost:1521:hy";
try {
conn = DriverManager.getConnection(url, "system", "manager");
System.out.println("conn ok");
}
catch (SQLException ex) {
}
} public void closeConn(){
if(conn!=null){
try {
conn.close();
System.out.println("conn close");
}
catch (SQLException ex) {
}
}
} //调用单独的具有输出参数的过程
public void testShuchu(int salary ){
//实例化cal
try {
//cal = conn.prepareCall("{call hr.shuchu(?,?)}");
call=conn.prepareCall("begin hr.shuchu(?,?); end;");
call.setInt(1,salary);
//注册输出参数
//cal.registerOutParameter(2,java.sql.Types.VARCHAR);
call.registerOutParameter(2,oracle.jdbc.OracleTypes.VARCHAR);
call.execute();
//获得输出参数
// String str=cal.getString(2);
String str=(String)call.getObject(2);
System.out.println(str);
}
catch (SQLException ex) {
}
finally{
try {
call.close();
}
catch (SQLException ex1) {
}
} }// 调用函数
public void testHanshu(int num1,int num2){
try {
call = conn.prepareCall("begin ?:=hr.mypack.myfunc(?,?); end;");
call.setInt(2,num1);
call.setInt(3,num2);
call.registerOutParameter(1,oracle.jdbc.OracleTypes.NUMBER);
call.execute();
int num = call.getInt(1);
System.out.println(num);
}
catch (SQLException ex) {
}
finally{
try {
call.close();
}
catch (SQLException ex1) {
}
} }// 调用游标
public void testRs(int salary){
try {
call = conn.prepareCall("begin hr.mypack.shuchu(?,?); end;");
call.setInt(1,salary);
call.registerOutParameter(2,oracle.jdbc.OracleTypes.CURSOR);
call.execute();
rs=(ResultSet)call.getObject(2); if(rs!=null){
while (rs.next()) {
System.out.println(rs.getString(2));
}
}
else{
System.out.println("查无结果");
}
}
catch (SQLException ex) {
}
finally{
try {
rs.close();
call.close();
}
catch (SQLException ex1) {
} }
}
public static void main(String[] args) {
TestOracle dbUtil1 = new TestOracle();
dbUtil1.testRs(420);
}}

热心网友 时间:2022-04-08 20:30

使用存储过程返回Oracle的结果集比较麻烦,必须要建包,并且声明游标类型,Java中的ResultSet实际上就是数据库的游标例子sql:create or replace package pkg_1 as type cursorType is ref cursor; procere getDept( rs out cursorType) ;end pkg_1;create or replace package body pkg_1 asprocere getDept( rs out cursorType) asbegin open rs for select * FROM dept ;end getDept;end pkg_1;连接类public class DBHelper catch (ClassNotFoundException e) Connection conn = null;try catch (SQLException e) return conn;}}访问存储过程的代码String sql = "";Connection conn = DBHelper.getConnection();try } catch (SQLException e)
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
上海什么酒店最高大上 业精于勤荒于嬉。行成于思毁于随 ""业精于勤,荒于嬉,行成于思,毁于随"是什么意思?解释的好点 文才神摆在阳台东南面朝窗户好吗 高锰酸钾鱼缸要泡多久合适 高锰酸钾泡鱼缸的时间介绍 高锰酸钾浸盆要多久 高锰酸钾浸泡需要的时间是多久? 高锰酸钾要泡多久合适 高锰酸钾要泡多长时间合适 天气炎热,长途车下面放行李的地方放活的黄鳝会死吗 15款明锐1.4 t烧机油吗 ...年斯柯达明锐换了四个点火线圈四个火花塞油耗增大两升左右为什么... 注册微信企业公众号创办时的创作者信息是什么意思? 原创性声明签字怎么弄 一个手机怎么开通两个 一个手机可以上两个吗 微信,我一个手机两张卡可以注册两个吗? 一个手机可以登录两个吗 一个手机可以登录两个码吗 一个手机如何同时登录两个? 一个手机可以开两个吗? 一个手机号可以同时绑定两个吗? 一个手机可以同时登录2个吗? 经常搭同事顺风车,同事怕发生事故后担责。我应该买什么保险解决此问题? 我想建一个篮球群 求一个个性的篮球群名字 关于凉山篮球队伍的名字 秦始皇兵马俑的艺术特点。简单地说一说吧!谢谢了! 急!快!寒假作业啊! 想建个篮球群都是我同学 求群名 秦始皇陵兵马俑的艺术特色、主题思想及历史意义。 举例说明兵马俑的主要艺术特色 篮球群名字! qq个性篮球群名称 提手旁加个建字念什么 苹果6 plus待机黑屏时,触摸home键不用按下去就可以亮起来这功能怎么设置? 苹果手机息屏的情况下滑动手势能打开软件或者手电筒怎么设置 提手专念什么 上海邮政快递查询 苹果手机activator怎样设置在屏幕黑屏时用手势解锁打开点亮屏幕呢?? iphone6黑屏待机状态按home键无法唤醒屏幕,按电源键才有反应。正常使用 10副以上精彩对联,要有横批 求上海市EMS内网查询 上海邮政物流怎么跟踪物流查单? EMS查询情况 提手加主念什么字 提手门念什么 怎样把oppor11手机的通讯录转到华为手机上? 满足金婚的条件有哪些? 英国皇家淑女礼仪有什么?如何做个举止优雅的淑女? oppo手机往华为手机传送手机号码 中国文化博大精深,帮帮忙,总结一下汉语言中所有的谦辞,敬辞 怎么把oppo手机上的通讯录导华为手机上 如何寻找适合的经销商?