当前位置:  数据库>oracle

Java中用JDBC调用Oracle存储过程和函数

    来源: 互联网  发布时间:2017-05-26

    本文导语: Java中通过JDBC可以调用数据库提供的存储过程,Oracle中的存储过程分成2种: 1.procedure: 没有返回值,但可以有多个输出参数,相当于返回值。 2.function:有一个返回值,也可以有多个输出参数。 Java中调用function的语法和调用procedure...

Java中通过JDBC可以调用数据库提供的存储过程,Oracle中的存储过程分成2种:

1.procedure: 没有返回值,但可以有多个输出参数,相当于返回值。

2.function:有一个返回值,也可以有多个输出参数。

Java中调用function的语法和调用procedure的不一样,调用procedure需要的特定语法为:

{ call 存储过程名(参数1, 参数2,……) }

在java中的写法是:con.prepareCall("{ call set_death_age(?, ?) }");

而function的调用的特定语法为:

{ 返回值 = call 存储过程名(参数1,参数2,……) }

在java中的写法是:connection.prepareCall("{ ? = call snuffed_it_when(?) }");

举例:

P_DZK_NETRES(V_DZID IN NUMBER,V_DZTYPE IN NUMBER ,V_ZYBM IN VARCHAR2,V_DZ IN VARCHAR2,V_RENUM OUT NUMBER)

而我调用该存储过程的Java代码为:

conn=ConnectionManager.getConnection();

CallableStatement proc = conn.prepareCall("{? = call P_DZK_NETRES(?, ?,?,?,?) }"); //调用存储过程

proc.setInt(1, 1);    //为第一个参数赋值

proc.setInt(2, 1);  //为第二个参数赋值

proc.setString(3, "a");

proc.setString(4, "b");

proc.registerOutParameter(5, Types.INTEGER); //注册输出参数,就是返回值

proc.execute();  //执行

String sql = proc.getInt(5);  //接收返回值

System.out.println("存储过程的值:" + sql);

proc.close();

上面的代码中的参数的编号是从("{? = call P_DZK_NETRES(?, ?,?,?,?) }")中得到的,按照从左到右的顺序排列,从1开始的。

所以很正常的我用该方式访问这个存过时就一直报错--- java.sql.SQLException: 索引中丢失 IN 或 OUT 参数:: 6

因为我用错了访问的方式

另外,即使Oracle的存储过程中的输入参数有默认值,也要在Java程序中赋值,否则报错:

java.sql.SQLException: 索引中丢失  IN 或 OUT 参数:: 参数的index


    
 
 

您可能感兴趣的文章:

  • 在ms-dos中用javac调试java.很多东西比如java_home,classpath等如何设置?
  • 能否给个在JSP页面中用JAVA画线条和矩形的简单例子,谢谢!
  • Linux 中用java语言写串口程序,提示找不到串口
  • java中用什么实现定时器功能?
  • 在SQL server 2000中用JAVA实现图片存储
  • 如何配置autoexec可以在命令行中用c:>java hellow.class
  • 在java中用什么函数可以从整型转到字符型?
  • java中用什么方法调用外部可执行文件?
  • 在JAVA小程序中用SWING组件怎样才可在IE中正确显示
  • 我順便提一個很久的問題 怎樣在java 中用ADO連資料庫
  • 请问:jsp中用到的.class和.java后缀的文件应放在哪个目录下??(Tomcat)
  • 在jmeter的beanshell中用java获取系统当前时间的简单实例
  • 程序中用何函数或方法才知道所运行的java程序名?
  • linux 系统中用java 采用jna 怎么调用c中的动态链接库
  • 请问如何在jsp中用java实现分页,最好有原码
  • java的虚函数是怎样定义的,现想将类A中的变量x定义为只能给子类B与自己类中可访问,而又不能给其他类中用实例A a = new A()的a访问,可
  • VB编写的DLL不能被JAVA调用,用C将VB编写的DLL包装起来,做成一个新的DLL;用C编写的DLL可以被JAVA调用,用JAVA再进行一层的包装,因为JAV
  • 请问从一个java程序中如何调用另一java程序,并控制可以其状态(最小化、最大化、结束程序),还有怎样知道那个被调用的程序结束。
  • 可不可以用java调用其他语言的编译结果?(好象asp调用com那样)
  • 请问如何在Java中调用一个VB所写的DLL?如何调用这个Dll的方法?如何取得和设置这个Dll的属性值?谢谢!
  • ###java调用COM组件或COM调用java组件(EJB)解决办法。###
  • java线程怎么调用java的application.class?
  • 求救!!如何在java程序中调用外部非java的exe文件?
  • 急!请问有分析java程序性能瓶颈的工具吗?例如,统计 java 程序中函数调用次数?
  • java.awt 和java.util都有List,想调用awt的List而出现Ambiguous class错误怎么办?
  • 请问在JAVA里将小写字母换为大写字母是用什么函数,大写转成小写又是用哪个函数? iis7站长之家
  • java调用sh脚本遇到export命令会卡住,sh不能调用子sh
  • Java能调用OLE对象吗?怎样利用Java生成Excel报表?
  • java打包后如何调用?
  • 请问Java可否调用MsSQL的存储过程,如何调用?
  • 奇怪?我在jsp中调用java类。java类本身编译没错,但jsp中的引用Tomcat总是报错。
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java的数学函数在那个类中,如幂函数、指数、对数、双曲线函数等?
  • 怎样用JAVA函数读写注册表,有这样的函数吗
  • java 的条件判断函数(类似于别的语言iif函数)
  • PHP中的Pack()函数,Java有哪个函数与之对应???
  • JAVA中函数调用时,能不能向 C/C++一样函数的入口参数可以为传出值(就是引用,或指针)
  • 请问在JAVA里将小写字母换为大写字母是用什么函数,大写转成小写又是用哪个函数?
  • java里有什么函数可以检查 java 代码并执行它?
  • 谁能告诉我,在JAVA中,哪个函数和ASP中的Int()函数等同,也就是取整函数
  • java类中的方法就是函数了,函数参数全是传值了,传址参数怎样表示?
  • 虚函数与纯虚函数(C++与Java虚函数的区别)的深入分析
  • Java中有不有与VB中Replace函数功能类似的函数?
  • java中函数的缺省参数怎么定义?
  • 如何实现Java下的回调函数!
  • 有关Java构造函数的问题之一——缺省性
  • 关于java函数?
  • ******关于java中调用函数的问题********
  • ▲ JAVA函数大全!!! ▲
  • JAVA里有没有类似SLEEP的函数?
  • Java函数式编程 Funcito
  • 谁有java函数大全,100重酬!!
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: stringflavor定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,