当前位置:  技术问答>java相关

关于java调用oracle存储过程的问题,谢谢!

    来源: 互联网  发布时间:2017-03-11

    本文导语:  1、我有一张表,只有一个字段 id varchar2(6)    有个ORACLE存储过程,有两个参数,    aa in varchar2     -- 代表id 的前4个字符    bb in out varchar2 -- 代表id 的后2个字符      现有一段java程序,想调用存储过...

1、我有一张表,只有一个字段 id varchar2(6)
   有个ORACLE存储过程,有两个参数,
   aa in varchar2     -- 代表id 的前4个字符
   bb in out varchar2 -- 代表id 的后2个字符
 
   现有一段java程序,想调用存储过程,不知道
   下面这段程序错在哪里?错误提示:
   错误.executeQuery:参数类型冲突: sqlType=12
   n 的值是"00"
   public String executeQuery(String n)
   {
   try
    {
     conn = ...  //省略了数据库连接等语句
     CallableStatement cstmt = conn.prepareCall("{?=call client_no(?,?)}");
     cstmt.registerOutParameter(1,Types.VARCHAR,n);
     cstmt.setString(2,"1203");
     cstmt.execute();
     n = cstmt.getString(1);
    }
     catch(SQLException ex)
      {System.err.println("错误.executeQuery:"+ex.getMessage());}
      return n;
   }

2、cstmt.registerOutParameter(1,Types.VARCHAR,n);
   和
   cstmt.setString(2,"1203");
   到底有什么区别?

3、cstmt.setString(2,"1203");  “2”表示是传给存储过程的第二个参数吗?

|
Oracle中后台的存储过程就有fucntion(函数)和procedure(过程)之分。
其中function是通过第一种方式获取返回值:
?=call client_no (?,?)。
因为function的是通过return语句返回结果的。
而procedure是没有return语句的。因此只有通过out类型的参数来返回结果,但通过这种方式可以返回多个结果(多定义几个out参数就可以),这是function不能实现的。
因此procedure的调用就是通过call client_no (?,?)。。。。。。。

所以再调用存储过程前先要了解它的具体类型。

|
CallableStatement cstmt = conn.prepareCall("{?=call client_no(?,?)}");
     cstmt.registerOutParameter(1,Types.VARCHAR,n);
     cstmt.setString(2,"1203");
     cstmt.execute();
////////////////////////////////////////////////
2、cstmt.registerOutParameter(1,Types.VARCHAR,n);
   和
   cstmt.setString(2,"1203");
   到底有什么区别?

你的第一个参数是调用存储过程返回的结果,cstmt.registerOutParameter(1,Types.VARCHAR,n);是声明其对象类型是返回varchar字符串类型
cstmt.setString(2,"1203");是设置存储过程调用参数(第一个),和普通的查询没有什么不同

我认为你的程序报错,是因为没有设定调用存储过程的第二个参数所至
添加cstmt.setString(3,"22");//后面的字符串随你的需要,赋""也行

|
cstmt = conn.prepareCall("{?=call client_no (?,?)}");                    
cstmt .registerOutParameter(1,java.sql.Types.Types.VARCHAR);
                    cstmt .setString(2,"sdfa");
                    cstmt .setInt(3,2);
                    cstmt .executeUpdate();
                    result = cstmt .getString(1);

是这么用的,我的运行正常.

|
我回答第三个问题

是的

    
 
 

您可能感兴趣的文章:

  • 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文件中怎样来调用另一个.java文件中的变量及其它东西!
  • java调用sh脚本遇到export命令会卡住,sh不能调用子sh
  • Java能调用OLE对象吗?怎样利用Java生成Excel报表?
  • java打包后如何调用?
  • 请问Java可否调用MsSQL的存储过程,如何调用?
  • 奇怪?我在jsp中调用java类。java类本身编译没错,但jsp中的引用Tomcat总是报错。
  • java能否调用dll或ocx
  • 如何用java调用word?来者给分!·!!!!!
  • 怎么在java里调用一个oracle的procedure呢?
  • 我在APPLET里调用JAVAMAIL发邮件,出现java.security.AccessControlException: access denied (java.util.PropertyPermission * read,write)的错误???
  • 求教!!!VC应用调用Java模块可行吗?
  • java将类序列化并存储到mysql(使用hibernate)
  • java调用sql server存储过程,如何取存储过程返回码(不是结果集)
  • 请问各位大侠怎样在java中调用存储过程和接受存储过程的返回参数
  • 使用Statement.java里的execute执行存储过程问题
  • java调用存储过程问题。
  • 各位你们用 JAVA 做MRP软件用"存储过程"吗 ?
  • java数据存储的问题
  • 在SQL server 2000中用JAVA实现图片存储
  • 如何用java对mysql存储文件
  • java调用存储过程的错误
  • 请一下java中组数的存储结构是怎么样的??
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 一个小问题,JAVA中计算某个过程的执行时间,回答了马上给分,10分钟内响应啊
  • 关于java编译过程中的bug说明
  • redhat 9 下安装 oracle9i 过程中,要求指定java目录,到底是哪一个目录?
  • 请问怎么在java的控件里画条线?思路,过程?谢谢
  • java调oracle过程的出了问题,求助!帮忙看看
  • 请问一般JAVA BEAN的开发过程是怎样的?(100分,在现等待,马上送)
  • 用java语言做一个银行和ATM,需要用到哪些知识???哪位教我具体的过程,步骤给200分.
  • 请教一下JAVA程序设计开发过程
  • 使用记事本编写java程序全过程图解
  • 大讨论:在java的开发过程中,大家都是用什么工具进行文档管理的?
  • Oracle中的存储过程在pl/sql和java中如何调用
  • java中关于合成过程中初始化的一问
  • java调用oracle存储过程的简单问题
  • java Class文件内部结构解析过程详解
  • Java类变量和成员变量初始化过程的应用介绍
  • java调用Oracle存储过程的方法实例
  • 一点java awt程序的调试过程(烂人专栏,大牛莫进)还有问题呀
  • Windows7下的Java运行环境搭建过程图解
  • java调用oracle分页存储过程示例
  • 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定义及介绍
  • 我对JAVA一窍不通,可惜别人却给我一个Java的project,要我做一个安装程序,请问哪里有JAVA INSTALLER下载,而且我要不要安装java的sdk才能完成此项任务?


  • 站内导航:


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

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3